题目链接:http://poj.org/problemlist
题意:模拟题,画冰中水分子排列形式的二维结构。
代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 1024
char s[M][M];
int map[16][16];
int r,c,n;
void Run()
{
int i,j;
int x,y;
for(i=0;i<n;i++){
x=i<<2;y=2;
for(j=0;j<n;j++,y+=4){
s[x][y]='O';
if(map[i][j]){
if(map[i][j]==1){
s[x][y-1]=s[x][y+1]='-';
s[x][y-2]=s[x][y+2]='H';
}
else{
s[x-1][y]=s[x+1][y]='|';
s[x-2][y]=s[x+2][y]='H';
}
}
else{
if(s[x][y-2]=='H'){
s[x][y+1]='-';
s[x][y+2]='H';
}
else{
s[x][y-1]='-';
s[x][y-2]='H';
}
if(x<2||x>=2&&s[x-2][y]=='H'){
s[x+1][y]='|';
s[x+2][y]='H';
}
else{
s[x-1][y]='|';
s[x-2][y]='H';
}
}
}
}
}
void Answer(int t)
{
int i;
printf("Case %d:\n\n",t);
for(i=0;i<c+2;i++)
putchar('*');
puts("");
for(i=0;i<r;i++){
putchar('*');
printf("%s",s[i]);
puts("*");
}
for(i=0;i<c+2;i++)
putchar('*');
puts("\n");
}
int main()
{
int i,j;
int k=1;
while(scanf("%d",&n),n){
for(i=0;i<n;i++){
for(j=0;j<n;j++)
scanf("%d",&map[i][j]);
}
r=(n<<2)-3;c=(n<<2)+1;
for(i=0;i<r;i++){
memset(s[i],' ',sizeof(char)*c);
s[i][c]=0;
}
Run();
Answer(k++);
}
return 0;
}