题目描述
其实用不到看题,搜UVa227就可以看到题目
题目来源及自己的思路
Puzzle, ACM/ICPC World Finals 1993, UVa227
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
#include <stdio.h>
#include <string.h>
#define len 6
char matrix[len][len] = {
"TRGSJ", "XDOKI", "M VLN", "WPABE", "UQHCF"
};
int flag = 1, row = 2, col = 1;
void Above(char matrix[len][len], int row, int col) {
if (row > 0 && row <= 4) {
matrix[row][col] = matrix[--row][col];
matrix[row][col] = ' ';
} else flag = 0;
}
void Below(char matrix[len][len], int row, int col) {
if (row >= 0 && row < 4) {
matrix[row][col] = matrix[++row][col];
matrix[row][col] = ' ';
} else flag = 0;
}
void Left(char matrix[len][len], int row, int col) {
if (col > 0 && col <= 4) {
matrix[row][col] = matrix[row][--col];
matrix[row][col] = ' ';
} else flag = 0;
}
void Right(char matrix[len][len], int row, int col) {
if (col >= 0 && col < 4) {
matrix[row][col] = matrix[row][++col];
matrix[row][col] = ' ';
} else flag = 0;
}
int main() {
char ins[100]; // instruction
gets(ins);
for (int i = 0; i < strlen(ins); ++i) {
if (ins[i] == '0') break;
if (ins[i] == 'A') {Above(matrix, row, col);continue;}
else if (ins[i] == 'B') {Below(matrix, row, col);continue;}
else if (ins[i] == 'L') {Left(matrix, row, col);continue;}
else if (ins[i] == 'R') {Right(matrix, row, col);continue;}
else flag = 0;
}
if (flag) {
for (int j = 0; j < len - 1; ++j) {
printf("\n");
for (int k = 0; k < len - 1; ++k)
printf("%c ", matrix[j][k]);
}
} else printf("This puzzle has no final configuration.");
return 0;
}
你期待的结果是什么?实际看到的错误信息又是什么?
在调用Above, Below, Left, Right的时候row和col就恢复2, 1
怎样调用后row和col保持修改?
https://blog.csdn.net/sinat_3...
你的应该是这个问题。