![在这里插入图片描述](https://img-blog.csdnimg.cn/fbd0b441a3a841f2b75454f893c6074d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUm9zZV9aaGFuZzI1,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/d344da63263a47e3a942c65ec82b938c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUm9zZV9aaGFuZzI1,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/af400a519c094737953fcf5cafd38384.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUm9zZV9aaGFuZzI1,size_20,color_FFFFFF,t_70,g_se,x_16)
解法:
#include<iostream>
#include<vector>
#include<string>
#include<Windows.h>
using namespace std;
vector<int>block[30];
int n;
void location(int b,int &block_place,int &block_height) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < block[i].size(); j++) {
if (block[i][j] == b)
{
block_place = i;
block_height = j;
}
}
}
}
void move_back(int bp, int bh) {
for (int i = bh+1; i < block[bp].size(); i++) {
int k = block[bp][i];
block[k].push_back(k);
}
block[bp].resize(bh+1);
}
void move_all(int bp1,int bh1,int bp2) {
for (int i = bh1; i < block[bp1].size(); i++) {
int k = block[bp1][i];
block[bp2].push_back(k);
}
block[bp1].resize(bh1);
}
void init() {
cin >> n;
for (int i = 0; i < n; i++)
block[i].push_back(i);
}
void solve() {
int block1, block2;
string op1, op2;
while (cin >> op1) {
if (op1 == "quit")
break;
cin >> block1 >> op2 >> block2;
int block1_place=0, block1_height=0;
int block2_place=0, block2_height=0;
location(block1, block1_place, block1_height);
location(block2, block2_place, block2_height);
if (block1_place == block2_place)
continue;
if (op1 == "move") {
move_back(block1_place, block1_height);
}
if (op2 == "onto") {
move_back(block2_place, block2_height);
}
move_all(block1_place,block1_height,block2_place);
}
}
void print() {
for (int i = 0; i < n; i++) {
cout << i << ":";
for (int j = 0; j < block[i].size(); j++)
{
cout << " " << block[i][j];
}
cout << endl;
}
}
int main() {
init();
solve();
print();
system("pause");
return 0;
}