题目:
定义数列里任意的 i 对于 p( i ) + p ( i + 1 ) != p ( i + 2 ) 都成立的序列为反斐波那契数列。给定N,要求输出 N组 1 — N 组成的反斐波那契数列。
思路:
只需要将序列倒着输出,每次将1的位置前移一位即可。
因为前面的数肯定比后面的数字大,所以必定是反斐波那契数列。
代码:
#include <bits/stdc++.h>
using namespace std;
int main( ) {
int i, j, k;
int T, N;
cin >> T;
while ( T -- ) {
cin >> N;
for ( i = 1; i <= N; i ++ ) {
k = N;
for ( j = 1; j <= N; j ++ ) {
if ( j == i ) {
printf("1 ");
} else {
printf("%d ", k -- );
}
}
putchar( '\n' );
}
}
return 0;
}