POJ 1132 Border(边界) 简单模拟

   这是道简单的模拟题,直接模拟过程便可,关键是找到点的坐标与对应格子的关系。

代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char ch[33][33],d;
    int i,j,x,y,k,n;
    scanf("%d",&n);
    k=0;
    while(n--)
    {
      scanf("%d%d",&x,&y);
      for (i=1;i<=32;i++)
        for (j=1;j<=32;j++)
           ch[i][j]='.';
      scanf("%c",&d);
      while(d!='.')
        {
           if (d=='E')
           {
             x++;
             ch[32-y+1][x]='X';
           }
           if (d=='N')
           {
             y++;
             ch[32-y+1][x+1]='X';
           }
           if (d=='W')
           {
             ch[32-y][x]='X';
             x--;
           }
           if (d=='S') 
           {
             ch[32-y+1][x]='X';
             y--;
           }        
            scanf("%c",&d);
        }
	  k++;
        printf("Bitmap #%d\n",k);
        for (i=1;i<=32;i++)
        {
          for (j=1;j<=32;j++) printf("%c",ch[i][j]);
          printf("\n");
        }   
        printf("\n");
    }
    return 0;
}

但是有一点很奇怪,为什么将以上程序定义的字符数组ch[33][33]改为ch[32][32],

当然其他内容相应地改变,而且也AC了,不过耗时增加了。

前者是:

后者是:

希望大神可以帮我解答一下,谢谢!

改后代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char ch[32][32],d;
    int i,j,x,y,k,n;
    scanf("%d",&n);
    k=0;
    while(n--)
    {
      scanf("%d%d",&x,&y);
      for (i=0;i<=31;i++)
        for (j=0;j<=31;j++)
           ch[i][j]='.';
      scanf("%c",&d);
      while(d!='.')
        {
           if (d=='E')
           {
             ch[31-y+1][x]='X';
			 x++;
           }
           if (d=='N')
           {
             y++;
             ch[31-y+1][x]='X';
           }
           if (d=='W')
           {
             ch[31-y][x-1]='X';
             x--;
           }
           if (d=='S') 
           {
             ch[31-y+1][x-1]='X';
             y--;
           }        
            scanf("%c",&d);
        }
	  k++;
        printf("Bitmap #%d\n",k);
        for (i=0;i<=31;i++)
        {
          for (j=0;j<=31;j++) printf("%c",ch[i][j]);
          printf("\n");
        }   
        printf("\n");
    }
    return 0;
}

题目来源:http://poj.org/problem?id=1132

你可能感兴趣的:(C++,bitmap,poj)