#include<iostream>
#include<string>
#include<cstdio>
#include<vector>
using namespace std;
const int maxn = 30;
int n;
vector<int> pile[maxn];
void find_block(int x, int& p, int& h){
for(p=0; p < n;p++)
for(h=0; h < pile[p].size();h++)
if(x == pile[p][h]) return;
}
void move_above(int p, int h){
for(int i=h+1; i < pile[p].size();i++)
{
int b = pile[p][i];
pile[b].push_back(b);
}
pile[p].resize(h+1);
}
void pile_onto(int p, int h, int p2){
for(int i = h; i < pile[p].size();i++)
pile[p2].push_back(pile[p][i]);
pile[p].resize(h);
}
int main()
{
cin >> n;
int a,b;
string s1,s2;
for(int i = 0; i<n;i++) pile[i].push_back(i);
while(cin >> s1 >> a >> s2 >> b){
int pa, pb, ha, hb;
find_block(a, pa, ha);
find_block(b, pb, hb);
if(pa == pb) continue;
if(s1 == "move") move_above(pa, ha);
if(s2 == "onto") move_above(pb, hb);
pile_onto(pa, ha, pb);
}
for(int i=0; i < n; i++)
{
printf("%d:",i);
for(int j=0; j < pile[i].size(); j++)
printf(" %d", pile[i][j]);
printf("\n");
}
return 0;
}
UVAThe blocks problem VECTOR的使用
最新推荐文章于 2021-08-28 15:39:50 发布