标题:大家帮忙来看看
取消只看楼主
a344304180
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-1-3
结帖率:0
已结贴  问题点数:20 回复次数:0 
大家帮忙来看看
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

本人菜鸟写的程序:
#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=1; i<=n; ++i)
    {
        int m;
        cin>>m;
        int **a=new int*[m];
        for(int j=0; j<m; j++)
        {
            a[j]=new int[m];
            for(int p=0; p<m; p++)
                cin>>a[j][p];
        }
        int y=0,t=0;
        if(m%2==0)
            y=1;
        for(int x=0; x<=m/2-y; x++)
        {
            for(int q=0; q<=m/2-y; q++)
            {
                if(a[x][q]!=a[x][m-1-q]||a[x][m-1-q]!=a[m-1-x][q]||a[m-1-x][q]!=a[m-1-x][m-1-q])
                {
                    cout<<"no"<<"\n";
                    t=1;
                    break;
                }
            }
            if(t==1)
                break;
        }
        if(t==0)
            cout<<"yes"<<"\n";
    }
    return 0;
}

个人感觉比较繁琐,不知道哪些地方可以优化,尤其循环判断的那一环节。。。

搜索更多相关主题的帖子: 游戏 下一步 正整数 元素 
2013-01-03 12:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-394892-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.092188 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved