题意
题干
POJ 2996的反向题目,输入和输出互换一下就行了。
因此其余部分不再赘述。
题解
思路
水题模拟,把棋盘存进去,然后再把输入的字符串读一遍就行了。注意由于输入中间存在空格,所以需要一行读两个字符串。
代码
#include <stdio.h>
int main(){
char map[17][35] = {"+---+---+---+---+---+---+---+---+","|...|:::|...|:::|...|:::|...|:::|","+---+---+---+---+---+---+---+---+","|:::|...|:::|...|:::|...|:::|...|","+---+---+---+---+---+---+---+---+","|...|:::|...|:::|...|:::|...|:::|","+---+---+---+---+---+---+---+---+","|:::|...|:::|...|:::|...|:::|...|","+---+---+---+---+---+---+---+---+","|...|:::|...|:::|...|:::|...|:::|","+---+---+---+---+---+---+---+---+","|:::|...|:::|...|:::|...|:::|...|","+---+---+---+---+---+---+---+---+","|...|:::|...|:::|...|:::|...|:::|","+---+---+---+---+---+---+---+---+","|:::|...|:::|...|:::|...|:::|...|","+---+---+---+---+---+---+---+---+\0"};
char w[100];
char b[100];
char fw[20];
scanf("%s%s",fw,w);
scanf("%s%s",fw,b);
//printf("%s\n",w);
//printf("%s\n",b);
char tmp;
int x,y;
for(int i = 0 ; ;){
if (w[i] == '\0') break;
tmp = w[i++];
if( tmp < 'a' ){
y = ( w[i++] - 'a' + 1 ) * 4 - 2;
x = ( '9' - w[i++] ) * 2 - 1;
}
else{
y = ( tmp - 'a' + 1 ) * 4 - 2;
x = ( '9' - w[i++] ) * 2 - 1;
tmp = 'P';
}
//printf("i = %d , c = %c\n",i,tmp);
map[x][y] = tmp;
if(b[i] == ',') i++;
}
for(int i = 0 ; ;){
if (b[i] == '\0') break;
tmp = b[i++];
if( tmp < 'a' ){
y = ( b[i++] - 'a' + 1 ) * 4 - 2;
x = ( '9' - b[i++] ) * 2 - 1;
}
else{
y = ( tmp - 'a' + 1 ) * 4 - 2;
x = ( '9' - b[i++] ) * 2 - 1;
tmp = 'P';
}
tmp = tmp + 'a' - 'A';
//printf("i = %d , c = %c\n",i,tmp);
map[x][y] = tmp;
if(b[i] == ',') i++;
}
for(int i = 0 ; i < 17 ; i++){
printf("%s\n",map[i]);
}
}