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