算法
准備一個最多能存放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;
}