2014年9月1日星期一

[UVa] 457 - Linear Cellular Automata


#include <stdio.h>
#include <string.h>
int DNA[10],dish[40]={0},dish_next[40]={0},cases;
int main(){
   //freopen("input.txt", "r", stdin);
   //freopen("output.txt", "w", stdout);
   
   
   scanf("%d",&cases);
   while(cases--){
     //getchar();
     for(int i=0;i<10;i++)scanf("%d",&DNA[i]);
     //for(int i=0;i<10;i++)printf("%d ",DNA[i]);
     dish[19]=1;
     for(int i=0;i<40;i++){
       if(dish[i]==1)printf(".");
         else if(dish[i]==2)printf("x");
         else if(dish[i]==3)printf("W");
         else printf(" ");
     }
     printf("\n");
     for(int i=0;i<49;i++){
       for(int k=0;k<40;k++){
         if(k==0)dish_next[k] = DNA[ dish[k]+dish[k+1] ];
         else if(k==39)dish_next[k] = DNA[ dish[k]+dish[k-1] ];
         else dish_next[k] = DNA[ dish[k-1]+dish[k]+dish[k+1] ];
       }
       for(int i=0;i<40;i++){
         if(dish_next[i]==1)printf(".");
         else if(dish_next[i]==2)printf("x");
         else if(dish_next[i]==3)printf("W");
         else printf(" ");
         dish[i] = dish_next[i];
       }
       printf("\n");
     }
     for(int i=0;i<40;i++){
       dish[i]=0;
       dish_next[i]=0;
     }
     if(cases)printf("\n"); //重要!檢查是否已經到最後了,最後不能輸出兩空行
   }
   return 0;
} 

沒有留言: