WA求助
  • 板块学术版
  • 楼主lhz2022
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/1/14 23:11
  • 上次更新2023/10/24 04:12:34
查看原帖
WA求助
822439
lhz2022楼主2023/1/14 23:11

wa求助
题目是U113383 费解的开关 代码

#include<iostream>
#include<cstdio>
using namespace std;
int rw[7];
int step;
int rr[7];
int ans;
int c(){
    for(int i=1;i<5;i++){
        for(int j=0;j<=4;j++){
            if(!(rr[i]>>j&1)){
                step++;
                if(step>6){
                    return -1;
                }
                rr[i+1]^=(1<<j);
                rr[i]^=(1<<j);
                if(j>0){
                    rr[i+1]^=(1<<(j-1));
                }
                if(j<4){
                    rr[i+1]^=(1<<(j+1));
                }
                
                rr[i+2]^=(1<<j);
            } 
        }
    }
    if(rr[5]==0b11111){
        return step;
    }
    else return -1;
}
int main(){
    int n,m,r;
    char ch;
    cin>>n;
    while(n--){
        ans=0x7fffffff;
        m=0;
        getchar();
        for(int i=1;i<=5;i++){
            rw[i]=0;
            for(int j=4;j>=0;j--){
                ch=getchar();
                rw[i]+=(ch-'0')<<j;
            }
            getchar();
        }
        for(int i=0;i<1<<5;i++){
            step=0;
            for(int k=1;k<=5;k++){
                rr[k]=rw[k];//备份
            }
            for(int j=0;j<=4;j++){
                if(i>>j&1){
                    step++;
                    rr[i]^=(1<<j);
                    if(j<4){
                        rr[1]^=(1<<(j+1));
                    }
                    if(j>0){
                        rr[1]^=(1<<(j-1));
                    }
                    rr[2]^=(1<<j);
                }
            }
            r=c();
            if(r>=0){
                ans=min(ans,r);
                m=1;
            }
        }
        if(m){
            cout<<ans<<endl;
        }
        else{
            cout<<-1<<endl;
        }
    }
    return 0;
}

自测不通过,完全找不到原因 总是输出-1

2023/1/14 23:11
加载中...