算法
准備一個最多能存放13個元素的隊列,開始時隊列為空。
1. 輸入n。
3. 將n加入隊列。
4. 令i從n到2執行:
// 此時隊列中有n-i+1個元素
將i-1加入到隊列首部。
// 此時隊列中有n-i+2個元素
執行i-1次:
將隊尾的元素放至隊首。
5. 輸出隊列。
代碼
#include <iostream> using namespace std; int main() { int tab[15][15]; for (int i=0; i<15; ++i) { for (int j=0; j<15; ++j) { tab[i][j]^=tab[i][j]; } } for (int n=1; n<=13; ++n) { tab[n][1]=n; for (int i=n; i>1; --i) { for (int j=n-i+2; j>1; --j) { tab[n][j]=tab[n][j-1]; } tab[n][1]=i-1; for (int j=0; j<i-1; ++j) { int t=tab[n][n-i+2]; for (int k=n-i+2; k>1; --k) { tab[n][k]=tab[n][k-1]; } tab[n][1]=t; } } } int n; cin >> n; while (n--) { int m; cin >> m; for (int i=1; i<m; ++i) { cout << tab[m][i] << " "; } cout << tab[m][m] << endl; } return 0; }