这道大模拟困了我好久
查看原帖
这道大模拟困了我好久
280636
封禁用户楼主2020/6/30 13:24

贴代码?

#include <bits/stdc++.h>
using namespace std;
bool sq[15][15],anssq[15][15],newsq[15][15];
int ans,n;
bool verify() {
    for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(anssq[i][j]!=newsq[i][j]) return false;
    return true;
}
bool nochange() {
    for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(anssq[i][j]!=sq[i][j]) return false;
    return true;
}
bool turn90() {
    for(int i=0;i<n;i++) {
        for(int j=0;j<n;j++) {
            newsq[j][n-1-i]=sq[i][j];
        }
    }
    return verify();
}
bool turn270() {
    turn90();
    turn90();
    turn90();
    return verify();
}
bool turn180() {
    turn90();
    turn90();
    return verify();
}
bool mirror() {
    int mid=n/2-1;
    for(int i=0;i<n;i++) 
        for(int j=0;j<n;j++) newsq[j][n-1-i]=sq[j][i];
    return verify();
}
bool comb() {
    bool sq2[15][15],sq3[15][15];
    memcpy(sq2,sq,sizeof(sq2));
    mirror();
    memcpy(sq,newsq,sizeof(sq));
    if(turn90()) {
        memcpy(sq,sq2,sizeof(sq));
        return true;
    }
    else if(turn180()) {
        memcpy(sq,sq2,sizeof(sq));
        return true;
    }
    else if(turn270()) {
        memcpy(sq,sq2,sizeof(sq));
        return true;
    }
    else {
        memcpy(sq,sq2,sizeof(sq));
        return false;
    }
}
int main(void) {
    cin>>n;
    for(int i=0;i<n;i++) {
        for(int j=0;j<n;j++) sq[i][j]=(getchar()=='@'?1:0);
        getchar();
    }
    for(int i=0;i<n;i++) {
        for(int j=0;j<n;j++) anssq[i][j]=getchar();
        getchar();
    }
    if(turn90()) cout<<1;
    else if(turn180()) cout<<2;
    else if(turn270()) cout<<3;
    else if(mirror()) cout<<4;
    else if(comb()) cout<<5;
    else if(nochange()) cout<<6;
    else cout<<7;
    return 0;
}

不知道为啥是错的(只能AC第一个点,一直输出都是7)

求大佬们解答蒟蒻的问题

2020/6/30 13:24
加载中...