社区讨论
6分只对第一个测试点,AC闭关
B4068[GESP202412 四级] Recamán参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhj9i91a
- 此快照首次捕获于
- 2025/11/03 22:55 4 个月前
- 此快照最后确认于
- 2025/11/03 22:55 4 个月前
哪位打捞能帮我看看哪有问题,我自己是看不出来。
思路为先判定条件,后将这些数进行快速排序(用了深基模板)。
代码如下:
CPP#include <bits/stdc++.h>
using namespace std;
int n , a[3010] , i , d;
void qsort (int l , int r);
bool check (int x) {
if (x <= 0) return 0;
for (int j = 1 ; j < i ; j++) {
if (a[j] == x) return 0;
}
return 1;
}
int main () {
scanf("%d" , &n);
a[1] = 1;
for (i = 2 ; i <= n ; i++) {
d = a[i - 1] - i;
if (check(d)) a[i] = a[i - 1] - i;
else a[i] = a[i - 1] + i;
}
qsort(1 , n - 1);
for (i = 1 ; i <= n ; i++) {
printf("%d " , a[i]);
}
return 0;
}
void qsort (int l , int r) {
int j = l , k = r , flag = a[(l + r) / 2] , tmp;
do {
while (a[j] < flag) j++;
while (a[k] > flag) k--;
if (j <= k) {
tmp = a[j];
a[j] = a[k];
a[k] = tmp;
j++;
k--;
}
} while (j <= k);
if (l < k) qsort(l , k);
if (j < r) qsort(j , r);
}
提交记录
回复
共 2 条回复,欢迎继续交流。
正在加载回复...