uva10189和zoj 1015

我喜欢这种脑残的数组遍历题。。。
#include<cstdio>
#include<cstdlib>
#include<cstring>
int main(void)
{
 int m,n,count = 0;
 int map[110][110];
 while(scanf("%d %d",&m,&n) == 2)
 { 
  memset(map,0,sizeof(map)); 
  if(m == 0&& n == 0) break;
  if(count) printf("\n");
  count ++;
  int i = 0,j = 0;
  for(i = 1;i <= m;i++)
  {
   getchar(); //scanf()以Enter结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);这种小错误老是犯。。
 
   for(j = 1;j <= n;j++)
    scanf("%c",&map[i][j]);
  }
  for(i = 1;i <= m; i ++)
   for(j = 1;j <= n; j ++)
   {
    if(map[i][j] == '.')
    {
     map[i][j] = 0;
     for(int k = i-1;k <= i+1;k ++)
      for(int l = j-1; l<= j+1; l++)
      {
       if(map[k][l] =='*')
        map[i][j]++;
      }
    }
   }
  printf("Field #%d:\n",count);  
  for(i = 1;i <= m; i++)
  {
   for(j = 1;j <= n;j++)
   {
    if(map[i][j] == '*')
     printf("%c",map[i][j]);
    else
     printf("%d",map[i][j]);
   }
   printf("\n");
  }
 
 }
 return 0;
}


zoj-1015

#include<stdio.h>  

int main(){  
    int i,g,N,n,j,k,f,t,d[20];  
    int c[22][22] = {0};  
    int a[22][22] = {0};  
     scanf("%d",&N);  
	 while(N--)
	 {		   getchar(); scanf()以Enter结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);
	 										/* 第一次输入会流下来一个\n 造成下一次的读写少一次*/
		    scanf("%d",&n);  
            for(t = 0;t<=15;t++){  
                scanf("%d",&d[t]);  
            }  
            for(g = 1;g<=20;g++){  
            	getchar();
                for(f = 1;f<=20;f++){  
                    scanf("%d",&a[g][f]);  
                }  
            } 

			  for(k = 1;k<=n;k++)
			  {  
					for(g = 1;g<=20;g++)
					{  
						for(f = 1;f<=20;f++)
						{  
							c[g][f] = a[g][f-1]+a[g][f+1]+a[g-1][f]+a[g+1][f]+a[g][f];  
                          
						}  
					}  

					 for(g = 1;g<=20;g++)
					 {  
						for(f = 1;f<=20;f++)
						{  
							t = c[g][f];  
							a[g][f] = a[g][f]+d[t];  
							if(a[g][f]<0)  
								a[g][f] = 0;  
							if(a[g][f]>3)  
								a[g][f] = 3;  
						}  
					}  

			  }
			   for(g = 1;g<=20;g++){  
                for(f = 1;f<=20;f++){  
                    if(a[g][f]==0)  
                        printf(".");  
                    if(a[g][f]==1)  
                        printf("!");  
                    if(a[g][f]==2)  
                        printf("X");  
                    if(a[g][f]==3)  
                        printf("#");  
                }  
                printf("\n");  
            }  
            if(j!=N)  
            printf("\n");  
		
	   getchar();  
	 }
      
    return 0;  
}  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值