#include<bits/stdc++.h>
using namespace std;
int p[100][100];
int n;
char s1[100], s2[100];
int a, b;
int xa, ya, xb, yb;
int findup(int x) {
int i = 0;
while (i < n && p[x][i] != -1)
i++;
return i - 1;
}
void find() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (p[i][j] == a)
xa = i, ya = j;
if (p[i][j] == b)
xb = i, yb = j;
}
}
}
void clear(int x, int y) {
for (int j = y; j < n; j++) {
p[p[x][j]][0] = p[x][j];
p[x][j] = -1;
}
}
void move(int xa, int ya, int xb, int yb) {
for (int i = ya, j = yb; i < n; i++, j++) {
p[xb][j] = p[xa][i];
p[xa][i] = -1;
}
}
int main() {
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
p[i][j] = -1;
for (int i = 0; i < n; i++)
p[i][0] = i;
cin >> s1;
while (s1[0] != 'q') {
cin >> a >> s2 >> b;
find();
if (xa == xb || a == b) {
cin >> s1;
continue;
}
if (s1[0] == 'm' && s2[1] == 'n')
clear(xa, ya + 1), clear(xb, yb + 1), move(xa, ya, xb, yb + 1);
if (s1[0] == 'm' && s2[1] == 'v')
clear(xa, ya + 1), yb = findup(xb), move(xa, ya, xb, yb + 1);
if (s1[0] == 'p' && s2[1] == 'n')
clear(xb, yb + 1), move(xa, ya, xb, yb + 1);
if (s1[0] == 'p' && s2[1] == 'v')
yb = findup(xb), move(xa, ya, xb, yb + 1);
cin >> s1;
}
for (int i = 0; i < n; i++) {
cout << i << ":";
for (int j = 0; j < n; j++) {
if (p[i][j] != -1)
cout << " " << p[i][j];
else
break;
}
cout << endl;
}
}
本地测试没问题,切合原题面
Don’t put any trailing spaces on a line.
即没有多余空格的要求,但是仍然WA了