简单模拟一个字符”noto“写错找了半小时 哎
#include <iostream>
#include <vector>
#include <string>
#include <cstdio>
using namespace std;
vector<int> vt[30];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
vt[i].push_back(i);
string str1,str2;
int a,b;
while(1)
{
cin>>str1;
if(str1=="quit")
break;
cin>>a;
cin>>str2;
cin>>b;
int x1,y1;
int x2,y2;
for(int i=0;i<n;i++)
{
for(int j=0;j<vt[i].size();j++)
{
if(vt[i][j]==a)
{
x1=i;
y1=j;
}
if(vt[i][j]==b)
{
x2=i;
y2=j;
}
}
}
if(x1==x2)
continue;
if(str1=="move")
{
if(str2=="onto")
{
for(int j=y1+1;j<vt[x1].size();j++)
{
int num=vt[x1][j];
vt[num].push_back(num);
}
for(int j=y2+1;j<vt[x2].size();j++)
{
int num=vt[x2][j];
vt[num].push_back(num);
}
int num1=vt[x1][y1];
vt[x1].resize(y1);
vt[x2].resize(y2+1);
vt[x2].push_back(num1);
}
else if(str2=="over")
{
for(int i=y1+1;i<vt[x1].size();i++)
{
int num1=vt[x1][i];
vt[num1].push_back(num1);
}
int num2=vt[x1][y1];
vt[x1].resize(y1);
vt[x2].push_back(num2);
}
}
else if(str1=="pile")
{
if(str2=="onto")
{
for(int i=y2+1;i<vt[x2].size();i++)
{
int num1=vt[x2][i];
vt[num1].push_back(num1);
}
vt[x2].resize(y2+1);
for(int i=y1;i<vt[x1].size();i++)
{
vt[x2].push_back(vt[x1][i]);
}
vt[x1].resize(y1);
}
else
{
for(int i=y1;i<vt[x1].size();i++)
{
vt[x2].push_back(vt[x1][i]);
}
vt[x1].resize(y1);
}
}
}
for(int i=0;i<n;i++)
{
printf("%d:",i);
for(int j=0;j<vt[i].size();j++)
{
printf(" %d",vt[i][j]);
}
printf("\n");
}
return 0;
}