@[AndyC](/user/366430) 你这个 test 的意思是你循环到第一个符合条件的就 return true
by 8atemak1r @ 2022-10-23 19:23:10
@[AndyC](/user/366430) 没有判断全
by 8atemak1r @ 2022-10-23 19:23:20
循环里要写判错的条件
by 8atemak1r @ 2022-10-23 19:23:32
而且你这个判断条件也是错的,不能是或,进位不进位要取决于上一位
by 8atemak1r @ 2022-10-23 19:24:01
@[8atemak1r](/user/305121) 我也写过进位的代码 貌似也不对...
by AndyC @ 2022-10-23 19:27:49
```cpp
#include<bits/stdc++.h>
using namespace std;
bool use[28];
int n,a[28];
string x,y,z;
bool test(){
int tot=0;
for(int i=0;i<n;i++){//ok
int q,w,e;
q=a[x[i]-'A'+1];//ok
w=a[y[i]-'A'+1];
e=a[z[i]-'A'+1];
if((q+w+tot)%n!=e) return false;
tot=(q+w+tot)/n;
}
return true;
//if(a[1]==1&&a[2]==0&&a[3]==3&&a[4]==4&&a[5]==2) return true;
//return false;
}
void dfs(int now){
if(now==n+1){
if(test()){
for(int j=1;j<=n;j++){
cout<<a[j]<<' ';
}
exit(0);
}
return;
}
for(int i=0;i<n;i++){//0 1 2 3 4 5
if(!use[i]){
a[now]=i;
use[i]=true;
dfs(now+1);
use[i]=false;
}
}
return;
}
void work(){
cin>>n;//>>x>>y>>z;
scanf("%s",&x);
scanf("%s",&y);
scanf("%s",&z);
dfs(1);
}
int main(){
work();
return 0;
}
```
by AndyC @ 2022-10-23 19:32:18
@[AndyC](/user/366430) 你是不是高低位弄反了
by 8atemak1r @ 2022-10-23 19:48:09
@[8atemak1r](/user/305121) 确实是 但是调过来还是错(还是因为我太弱了。。。。)
by AndyC @ 2022-10-23 19:52:23
@[AndyC](/user/366430) 看看
by 8atemak1r @ 2022-10-23 20:26:26
@[8atemak1r](/user/305121)
```cpp
void work(){
cin>>n>>x>>y>>z;
//scanf("%s",&x);
//scanf("%s",&y);
//scanf("%s",&z);
dfs(1);
}
```
哈哈哈哈我这辈子都不用scanf了 谢谢(又加了点剪枝)AC了 等上课了我叫我同学关注dalao
by AndyC @ 2022-10-23 21:34:17