Content
有一只小青蛙想游历 \(n\) 块土堆,它现在在 \(1\) 号土堆上,每次可以跳跃任意距离到达另外的一个土堆。它想让每次跳跃的距离都不相等,试找到这样的一个方案。
数据范围:\(1\leqslant n\leqslant 10^4\)。
Solution
我们可以尝试左右横跳的方式,从 \(1\) 跳到 \(n\),再从 \(n\) 跳到 \(2\),再从 \(2\) 跳到 \(n-1\)……以此类推,直到所有的土堆都遍历过为止。
Code
int n;
int main() {
getint(n);
int i = 1, cur = 1;
while(cur <= n) {
printf("%d ", i);
if(cur % 2) i += (n - cur);
else i -= (n - cur);
cur++;
}
return 0;
}