社区讨论

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 条回复,欢迎继续交流。

正在加载回复...