好玄学的题
查看原帖
好玄学的题
1460846
Cc20120608楼主2025/8/2 11:49

这道题是本蒟蒻写过的行数最多,耗时最长的一道题了。

我的写法:1.全局变量:定义四个char数组,前两个存输入,第三个存1,2,3,4的变化后,第四个存5的变化,还有一个bool变量判断是否相同(亲测麻烦但有效)

为了应讨论区规定,展示一个非AC代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=15;
int n;
char maze1[maxn][maxn],maze2[maxn][maxn],x[maxn][maxn],x2[maxn][maxn];
bool f=1;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>maze1[i][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>maze2[i][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            x[i][j]=maze1[n-j+1][i];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(x[i][j]!=maze2[i][j])
                f=0;
    if(f)
    {
        cout<<1;
        return 0;
    }
    f=1;
    //2至4变化省略
    f=1;
    //5是重点!
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            x2[i][j]=x[n-j+1][i];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(x2[i][j]!=maze2[i][j])
                f=0;
    if(f)
    {
        cout<<5;
        return 0;
    }
    f=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            x2[i][j]=x[n-i+1][n-j+1];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(x2[i][j]!=maze2[i][j])
                f=0;
    if(f)
    {
        cout<<5;
        return 0;
    }
    f=1;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            x2[i][j]=x[j][n-i+1];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(x2[i][j]!=maze2[i][j])
                f=0;
    if(f)
    {
        cout<<5;
        return 0;
    }
    f=1;
    //6、7省略
	return 0;
}

然后就是我得到这篇代码的“艰辛”过程——从函数写到for循环再到纯模拟,从不输出改到只输出5再到只输出1……

不过结果是好的,愿各位读者也坚持不懈,在编程道路上书写自己的辉煌!加油!

真不是发布题解,别举报啊,只是提供思路和格式而已

2025/8/2 11:49
加载中...