一、引入:
假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)
能满足形如: ab*cde =adb*ce 这样的算式一共有多少种呢?
二、分析:
找出满足 ab*cde = adb*ce 且 a b c d e 代表1~9各不相同的5个数字 的算式组合数 。
三、代码:
1.dfs搜索法:
vis[10] :标记数组;
a[5] :存放 a,b,c,d,e 5个数;
回溯法。
#include<iostream>
using namespace std;
int a[5]={0};
int vis[10]={0};
int index = 0;
void dfs(int k){
if(k==5){
if( (a[0]*10+a[1])*(a[2]*100+a[3]*10+a[4]) == (a[0]*100+a[3]*10+a[1])*(a[2]*10+a[4]) ){
index++;
}
return;
}
for(int i=1;i<=9;i++){
if(!vis[i]){
vis[i]=1;
a[k]=i;
dfs(k+1);
vis[i]=0;
}
}
}
int main(){
dfs