POJ-3032

时间:2022-03-14 07:04:26

算法

准备一个最多能存放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 ;
}

相关文章