凑算式1
2
3 B DEF
A + — + -— —— = 10
C GHI
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
这个题不多说了,直接暴力生成9的全排列然后去验证等式是否成立,只是验证的时候如果防止精度问题可以通分把除法变成乘法。
答案是:29
1 | //暴力生成9的全排列 dfs |
错误代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38//暴力生成9的全排列 dfs
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
#define MAX 10
vector<int> vec;
vector<int> v[MAX];
int vis[10];
int cnt=0,num;
void dfs(int k){
if(num==9){
vec.push_back(k);
for(int t=0;t<9;t++)
cout<<vec[t]<<" ";
cout<<endl;
v[cnt++]=vec;
vec.pop_back();
memset(vis,0,sizeof(vis));
num=0;
return;
}
vis[k]=true;
for(int i=1;i<=9;i++){
if(!vis[i]){
num++;//错误 Num是全局变量
vis[i]=true;
vec.push_back(i);
dfs(i);
vis[i]=false;
vec.pop_back();
}
}
}
int main(){
dfs(1);
}