此道題目采用一維數組和結構體來解。
#include<iostream>
using namespace std;
int main()
{
int n,m,m1,m2;
struct S//以每個位置設置結構體
{
int d;//每個位置上學生的學號
};
struct S s[1001];
cin>>n>>m;
for(int i=1;i<=n;i++)
{
s[i].d=i;//最初每個學生按照學號排位置
}
while(m--)
{
cin>>m1>>m2;//m1,m2分別為每次排隊選取的學生學號和移動的大小
int p,q;
for(int i=1;i<=n;i++)
{
if(s[i].d==m1)
q=i;
}
if(m2>0)
{
p=m2;
while(p--)
{
s[q].d=s[q+1].d;//把需要移動的學生依次移位
q++;
}
}
if(m2<=0)
{
p=-m2;
while(p--)
{
s[q].d=s[q-1].d;
q--;
}
}
s[q].d=m1;
}
for(int i=1;i<n;i++)
{
cout<<s[i].d<<" ";
}
cout<<s[n].d<<endl;
}