折纸游戏

/*浙江工业大学1016
折纸游戏
Time Limit:1000MS  Memory Limit:32768K


Description:
fans喜欢玩折纸游戏。整张纸被分成m*m个格子,即构成一个方阵,每个格子里面都写了一个正整数。游戏分两步:首先左右对折,如果对应的格子的数字都相同,那么进行下一步操作;否则停止游戏,此时游戏的结果是“no”。然后上下对折,如果对应的格子的数字相同,那么游戏的结果是“yes”;否则游戏的结果是“no”。

Input:
第一个数为方阵的个数n,接着就是每个方阵的数据,每个方阵的第一行为该方阵的阶m,后跟m*m个元素。
Output:
如果对应的格子的数字相同,那么游戏的结果是“yes”;否则游戏的结果是“no”。
Sample Input:
2
3
1 2 1
3 5 3
1 2 1
4
2 1 1 2
1 2 3 4
4 3 2 1
2 1 1 2

Sample Output:
yes
no
*/

 1#include<iostream>
 2using namespace std;
 3
 4int matrix[1000][1000];
 5
 6int main()
 7{
 8    int n,m;
 9    scanf("%d",&n);
10    while(n--){
11        scanf("%d",&m);
12        for(int i=0;i<m;i++){
13            for(int j=0;j<m;j++){
14                scanf("%d",&matrix[i][j]);
15            }

16        }

17        int pos = m/2;
18        bool flag = true;
19        if(m&1 == 1){//m为奇数
20            for(int j=0;j<pos;j++){
21                for(int i=0;i<m;i++){
22                    if(matrix[i][j]!=matrix[i][pos+1+j]){
23                        //no
24                        flag = false;
25                        break;
26                    }

27                }

28            }

29            if(flag == true){
30                for(int i=0;i<pos;i++){
31                    for(int j=0;j<=pos;j++){
32                        if(matrix[i][j]!=matrix[pos+1+i][j]){
33                            //no
34                            flag = false;
35                            break;
36                        }

37                    }

38                }

39            }

40        }
else{
41            for(int j=0;j<pos;j++){
42                for(int i=0;i<m;i++){
43                    if(matrix[i][j]!=matrix[i][pos+j]){
44                        //no
45                        flag = false;
46                        break;
47                    }

48                }

49            }

50
51            if(flag == true){
52                for(int i=0;i<pos;i++){
53                    for(int j=0;j<pos;j++){
54                        if(matrix[i][j]!=matrix[pos+i][j]){
55                            //no
56                            flag = false;
57                            break;
58                        }

59                    }

60                }

61            }

62        }

63        if(flag == true){
64            printf("yes\n");
65        }
else{
66            printf("no\n");
67        }

68    }

69    return 0;
70}

 

posted on 2011-11-10 16:16 DGQKing 阅读(823) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜