POJ-2993 解题报告

题意简述

这题是POJ-2996的逆过程。给出棋盘描述,要求打印出棋盘。

具体的描述和棋盘格式见POJ-2996。

算法分析

这个比2996简单。也是直接模拟。

开一个二维数组存储8*8棋盘,读入一行后按”,”拆分,判断是3位还是2位,三位的话按第二三位定位点并存储第一位字符(注意根据黑白区分大小写),二位的话存储P。

最后按指定格式输出即可。

Problem Status: AC。时间0ms,内存388k

程序样例

[c]#include<stdio.h>
#include<string.h>
void output(char a[8][8])
{
int i,j;
printf("+—+—+—+—+—+—+—+—+n");
for(i=0;i<8;i++)
{
printf("|");
for(j=0;j<8;j++)
{
if(a[i][j]==’ ‘)
if((i+j)%2==0) printf("…|");
else printf("::: |");
else
if((i+j)%2==0) printf(".%c.|",a[i][j]);
else printf(":%c: |",a[i][j]);
}
printf("n+—+—+—+—+—+—+—+—+n");
}
}

int main()
{
char t[60];
char a[8][8];
int i,j;
for(i=0;i<64;i++) a[i/8][i%8]=’ ‘;
scanf("%s",t); scanf("%s",t);
i=0; j=0;
while(i<strlen(t))
{
while(t[j]!=’,’&&j<strlen(t)) j++;
if(j-i==3)
a[8-(t[i+2]-‘0’)][t[i+1]-‘a’]=t[i];
else
a[8-(t[i+1]-‘0’)][t[i]-‘a’]=’P’;
j++; i=j;
}
scanf("%s",t); scanf("%s",t);
i=0; j=0;
while(i<strlen(t))
{
while(t[j]!=’,’&&j<strlen(t)) j++;
if(j-i==3)
a[8-(t[i+2]-‘0’)][t[i+1]-‘a’]=t[i]-‘A’+’a’;
else
a[8-(t[i+1]-‘0’)][t[i]-‘a’]=’p’;
j++; i=j;
}
output(a);

system("pause");
return 0;
}
[/c]

Leave a Reply

Your email address will not be published. Required fields are marked *