poj 1099

来源:互联网 发布:手机正装照软件 编辑:程序博客网 时间:2024/06/03 14:09

真正意义上的“水题”

#include<stdio.h>int in[15][15];char out[50][50];int main(){    int num,m;    int rpo,cpo,iuh;    int i,j;    num=1;    while(scanf("%d",&m) && m !=0){        memset(out,0,sizeof(out));        if(num>1)printf("\n");        printf("Case %d:\n\n",num++);        for(i=0;i<m;i++)            for(j=0;j<m;j++)                scanf("%d",&in[i][j]);        rpo=0;        for(i=0;i<m;i++){            cpo=0;            for(j=0;j<m;j++){                if(in[i][j]==0){                    if(cpo==0 || out[rpo][cpo-2] != 'H'){                        if(rpo==0 || out[rpo-2][cpo+2] =='H') iuh=1;                        else iuh= -1;                        memcpy(out[rpo      ]+cpo,"H-O ",sizeof(char)*4);                        memcpy(out[rpo+iuh  ]+cpo,"  | ",sizeof(char)*4);                        memcpy(out[rpo+iuh*2]+cpo,"  H ",sizeof(char)*4);                    }                    else{                        if(rpo==0 || out[rpo-2][cpo] =='H') iuh=1;                        else iuh= -1;                        memcpy(out[rpo      ]+cpo,"O-H ",sizeof(char)*4);                        memcpy(out[rpo+iuh  ]+cpo,"|   ",sizeof(char)*4);                        memcpy(out[rpo+iuh*2]+cpo,"H   ",sizeof(char)*4);                    }                    cpo+=4;                }                else if(in[i][j]==1){                        memcpy(out[rpo      ]+cpo,"H-O-H ",sizeof(char)*6);                        cpo+=6;                }                else if(in[i][j]==-1){                        memcpy(out[rpo-2    ]+cpo,"H ",sizeof(char)*2);                        memcpy(out[rpo-1    ]+cpo,"| ",sizeof(char)*2);                        memcpy(out[rpo      ]+cpo,"O ",sizeof(char)*2);                        memcpy(out[rpo+1    ]+cpo,"| ",sizeof(char)*2);                        memcpy(out[rpo+2    ]+cpo,"H ",sizeof(char)*2);                        cpo+=2;                }            }            rpo+=4;        }        for(i=0;i<4*m+3;i++)            printf("*");        printf("\n");        for(i=0;i<4*m-3;i++){            printf("*");            for(j=0;j<4*m+1;j++){                if(out[i][j] != '\0')printf("%c",out[i][j]);                else printf(" ");            }            printf("*\n");        }        for(i=0;i<4*m+3;i++)            printf("*");        printf("\n");    }    return 0;}