http://poj.org/problem?id=2993
题目大意:
同 POJ2996 两题正好相反 这个是给你坐标 让你打印棋盘
分析:
先构造棋盘基本框架 然后向棋盘内添加 点
AC代码:
#include <stdio.h>
#include <string.h>
char map[100][100];
char str1[50];
char str2[50];
char str[50];
int main (){
scanf ("%*s");
scanf("%s",str1);
scanf ("%*s");
scanf("%s",str2);
for (int i=0;i<17;i++){
for (int j=0;j<33;j++){
if (j%4==0&&i%2==0)
map[i][j]='+';
else if(i%2==0)
map[i][j]='-';
if (i%2==1&&j%4==0)
map[i][j]='|';
if(i%2==1&&(i-1)/4.0==(i-1)/4){
if((j-1)/8.0==(j-1)/8){
map[i][j]=map[i][j+1]=map[i][j+2]='.';
}
else if((j-5)/8.0==(j-5)/8){
map[i][j]=map[i][j+1]=map[i][j+2]=':';
}
}
else if(i%2==1&&(i-3)/4.0==(i-3)/4){
if((j-1)/8.0==(j-1)/8){
map[i][j]=map[i][j+1]=map[i][j+2]=':';
}
else if((j-5)/8.0==(j-5)/8){
map[i][j]=map[i][j+1]=map[i][j+2]='.';
}
}
}
}
int n=strlen(str1);
int len=0;
for (int i=0;i<n;i++){
if(str1[i]!=','){
str[len++]=str1[i];
}
}
len--;
while (len>=0){
int x=17-(str[len]-'0')*2;
int y=2+(str[len-1]-'a')*4;
if(str[len-2]>='0'&&str[len-2]<='8'){
map[x][y]='P';
len-=2;
}
else{
map[x][y]=str[len-2];
len-=3;
}
}
n=strlen(str2);
len=0;
for (int i=0;i<n;i++){
if(str2[i]!=','){
str[len++]=str2[i];
}
}
len--;
while (len>=0){
int x=17-(str[len]-'0')*2;
int y=2+(str[len-1]-'a')*4;
if(str[len-2]>='0'&&str[len-2]<='8'){
map[x][y]='p';
len-=2;
}
else{
map[x][y]=str[len-2]+32;
len-=3;
}
}
for (int i=0;i<17;i++){
for (int j=0;j<33;j++){
printf ("%c",map[i][j]);
}
putchar('\n');
}
return 0;
}
356

被折叠的 条评论
为什么被折叠?



