#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<string>
#include<vector>
#include<math.h>
#include <algorithm>
#pragma warning(disable:4996)
using namespace std;
int n;
vector<int> block[30];
void find(int a,int &p,int &h)
{
for (p = 0; p < n; p++)
for (h = 0; h < block[p].size(); h++)
if (block[p][h] == a)
return ;
}
void clear(int p, int h)
{
for (int i = h + 1; i < block[p].size(); i++)
block[block[p][i]].push_back(block[p][i]);
block[p].resize(h + 1);
}
void pile(int p, int h, int p2)
{
for (int i = h; i < block[p].size(); i++)
block[p2].push_back(block[p][i]);
block[p].resize(h);
}
void print()
{
for (int i = 0; i < n; i++)
{
printf("%d:", i);
for (int j = 0; j < block[i].size(); j++)
printf(" %d", block[i][j]);
printf("\n");
}
}
int main()
{
int a, b;
cin>>n;
string s, ss;
for (int i = 0; i < n; i++)
block[i].push_back(i);
while (1)
{
cin>>s;
if(s =="quit")
break;
cin>>a>>ss>>b;
int pa, ha, pb, hb;
find(a, pa, ha);
find(b, pb, hb);
if (pa==pb)
continue;
if (ss == "onto")
clear(pb, hb);
if (s =="move")
clear(pa,ha);
pile(pa, ha, pb);
}
print();
return 0;
}
A - The Blocks Problem
最新推荐文章于 2022-04-27 20:33:18 发布