这个算式中A-I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
思路:
暴力使用全排列,全排列用递归实现。
//递归回溯法生成无重复元素的全排列
#include<iostream>
using namespace std;
int cnt;
int a[] = { 1,2,3,4,5,6,7,8,9 };
void f(int k) {
if (k == 9) {//判断是否符合要求
int x=a[3]*100+a[4]*10+a[5];
int y=a[6]*100+a[7]*10+a[8];
if ((a[1] * y + a[2] * x) % (a[2] * y) == 0 && (a[1] * y + a[2] * x) / (a[2] * y)==(10-a[0])) {
cnt++;
}
return;
}
//表示第k位之前都已经排序完成
for (int i = k; i < 9; i++) {
int temp = a[k];
a[k] = a[i];
a[i] = temp;
f(k + 1);
temp = a[k];
a[k] = a[i];
a[i] = temp;
}
return ;
}
int main() {
f(0);
cout << cnt;
return 0;
}