算法
准备一个最多能存放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[][];
for (int i=; i<; ++i)
{
for (int j=; j<; ++j)
{
tab[i][j]^=tab[i][j];
}
}
for (int n=; n<=; ++n)
{
tab[n][]=n;
for (int i=n; i>; --i)
{
for (int j=n-i+; j>; --j)
{
tab[n][j]=tab[n][j-];
}
tab[n][]=i-;
for (int j=; j<i-; ++j)
{
int t=tab[n][n-i+];
for (int k=n-i+; k>; --k)
{
tab[n][k]=tab[n][k-];
}
tab[n][]=t;
}
}
}
int n;
cin >> n;
while (n--)
{
int m;
cin >> m;
for (int i=; i<m; ++i)
{
cout << tab[m][i] << " ";
}
cout << tab[m][m] << endl;
}
return ;
}