题目:

代码:
#include <iostream>
#include <vector>
using namespace std;
const int N = 30;
typedef pair<int, int> PII;
vector<int> pN;
int n;
PII find(int x)//找到编号为x的木块的位置
{
for(int i = 0; i <n; i++)
{
for(int j = 0; j < pi.size(); j++)
{
if(pij == x)
{
return {i, j};
}
}
}
}
void clean(int x, int y)//把(x, y)位置的木块上方木块归位
{
for(int j = y + 1; j < px.size(); j++)
{
int t = pxj;
pt.push_back(t);
}
px.resize(y + 1);
}
void move(int x1, int y1, int x2)//把(x1, y1)及以上的木块挪到x2最上面
{
for(int j = y1; j < px1.size(); j++)
{
px2.push_back(px1j);
}
px1.resize(y1);
}
int main()
{
cin >> n;
for(int i = 0; i < n; i++)
{
pi.push_back(i);
}
string op1, op2;
int a, b;
while(cin >> op1 >> a >> op2 >> b)
{
int x1, y1, x2, y2;
PII pa, pb;
pa = find(a);
pb = find(b);
x1 = pa.first; y1 = pa.second;
x2 = pb.first; y2 = pb.second;
if(x1 == x2) continue;
if(op1 == "move")
{
clean(x1, y1);
}
if(op2 == "onto")
{
clean(x2, y2);
}
move(x1, y1, x2);
}
for(int i = 0; i < n; i++)
{
cout << i << ":";
for(int j = 0; j < pi.size(); j++)
{
cout << " " << pij;
}
cout << endl;
}
return 0;
}
总结:
本题主要考察vector数组的使用,可以通过抽象出操作find()、clear()、move(),然后分情况组合解决问题
坚持编程,我一直在路上!