您的位置:首页 > 其它

POJ 2993 Emag eht htiw Em Pleh(模拟)

2017-07-19 09:41 281 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  模拟