HDU1057

View Code
 1 /*

 2 模拟 简单

 3 res[i][j]=mat[i][j]+d[sum];

 4 其中sum=mat[i][j]+i,j其他四个方向的值

 5 */

 6 #include<stdio.h>

 7 #include<string.h>

 8 #include<stdlib.h>

 9 #include<algorithm>

10 #include<iostream>

11 #include<queue>

12 //#include<map>

13 #include<math.h>

14 using namespace std;

15 typedef long long ll;

16 //typedef __int64 int64;

17 const int maxn = 25;

18 const int inf = 0x7fffffff;

19 const int pi=acos(-1.0);

20 int mat[ maxn ][ maxn ],res[ maxn ][ maxn ];

21 int d[ maxn ];

22 const int dx[]={0,0,-1,1};

23 const int dy[]={1,-1,0,0};

24 

25 void solve(){

26     for( int i=1;i<=20;i++ ){

27         for( int j=1;j<=20;j++ ){

28             int x,y,sum=0;

29             sum=mat[ i ][ j ];

30             for( int k=0;k<4;k++){

31                 x=i+dx[ k ];

32                 y=j+dy[ k ];

33                 if( x<1||x>20||y<1||y>20)continue;

34                 sum+=mat[ x ][ y ];

35             }

36             res[ i ][ j ]=d[ sum ]+mat[ i ][ j ];

37             if( res[ i ][ j ]<0 ) res[ i ][ j ]=0;

38             else if( res[ i ][ j ]>3 ) res[ i ][ j ]=3;

39         }

40     }

41     return ;

42 }

43 

44 int main(){

45     int ca;

46     scanf("%d",&ca);

47     for(int c=1;c<=ca;c++){

48     if(c!=1)printf("\n");

49     int n;

50     scanf("%d",&n);

51         memset( mat,0,sizeof(mat) );

52         memset( res,0,sizeof(res) );

53         for( int i=0;i<16;i++ ) scanf("%d",&d[ i ]);

54         for( int i=1;i<=20;i++ )

55             for( int j=1;j<=20;j++ )

56                 scanf("%d",&mat[ i ][ j ]);

57         for( int t=1;t<=n;t++ ){

58             solve();

59             memcpy( mat,res,sizeof(res) );

60         }

61         for( int i=1;i<=20;i++ ){

62             for( int j=1;j<=20;j++ ){

63                 if( res[ i ][ j ]==0 ) printf(".");

64                 else if( res[ i ][ j ]==1 ) printf("!");

65                 else if( res[ i ][ j ]==2 ) printf("X");

66                 else if( res[ i ][ j ]==3 ) printf("#");

67             }

68             printf("\n");

69         }

70     }

71     return 0;

72 }

 

你可能感兴趣的:(HDU)