ABC+DEF=GHI
找出排列的方式有多少个。
using namespace std;
int a[10],cnt=0;
int vis[100];
void dfs(int step){
if(step==10)
{
if(a[1]*100+a[2]*10+a[3]+a[4]*100+a[5]*10+a[6]==a[7]*100+a[8]*10+a[9])
cnt++;
return ;
}
for(int i=1;i<=9;i++)
{
if(!vis[i])
{
a[step]=i;//这里要注意,不撞南墙不回头,用步数代替层数。
vis[i]=1;
dfs(step+1);
vis[i]=0;
}
}
}
int main(){
dfs(1);
cout<<cnt/2<<endl;
return 0;
}