求巨佬帮帮找找bug
找了半天找不出来bug在哪 QwQ
Test Input:
21
BADCEFGHIJKLMNOPQRSTU
BADCEFGHIJKLMNOPQRSTU
BDEGIKMOQTBDEGIKMOQST
代码如下:
#include <bits/stdc++.h>
using namespace std;
char s1[30],s2[30],s3[30];
bool rec=false;
int n,num[30];
int a[30],b[30],c[30];
bool z[30];
bool cut(){
if(rec)return true;
if(num[a[0]]+num[b[0]]>=n)return true;
for(int i=n-1;i>=0;i--){
int A=num[a[i]],B=num[b[i]],C=num[c[i]];
if(A==-1||B==-1||C==-1)continue;
if((A+B)%n!=C&&(A+B+1)%n!=C)return true;
}
return false;
}
bool check(){
int m=0;
for(int i=n-1;i>=0;i--){
int A=num[a[i]],B=num[b[i]],C=num[c[i]];
if((A+B+m)%n!=C)return false;
if(A+B+m>=n)m=1;
else m=0;
}
rec=true;
return true;
}
void print(){
for(int i=0;i<n;i++){
cout<<num[i]<<" ";
}
return;
}
void dfs(int x){
if(cut())return;
if(x<0){
if(check()){
print();
}
return;
}
if(num[a[x]]==-1){
for(int i=n-1;i>=0;i--){
if(z[i])continue;
num[a[x]]=i;
z[i]=true;
dfs(x);
z[i]=false;
num[a[x]]=-1;
}
}
if(num[b[x]]==-1){
for(int i=0;i<n;i++){
if(z[i])continue;
num[b[x]]=i;
z[i]=true;
dfs(x);
z[i]=false;
num[b[x]]=-1;
}
}
if(num[c[x]]==-1){
for(int i=0;i<n;i++){
if(z[i])continue;
num[c[x]]=i;
z[i]=true;
dfs(x);
z[i]=false;
num[c[x]]=-1;
}
}
dfs(x-1);
}
int main(){
cin>>n;
cin>>s1;cin>>s2;cin>>s3;
for(int i=0;i<n;i++){
z[i]=false;
num[i]=-1;
a[i]=s1[i]-'A';
b[i]=s2[i]-'A';
c[i]=s3[i]-'A';
}
dfs(n-1);
return 0;
}