0
点赞
收藏
分享

微信扫一扫

蓝桥杯-凑算式 dfs

题目;
蓝桥杯-凑算式  dfs_#define思路: if(n == 10)!!!!!下次一定不要漏掉,我自闭了。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<queue>
#include<cmath>
#include<cctype>
#include<stack>
#include<map>
#include<string>
#include<cstdlib>
#define ll long long
//#define N 100010
using namespace std;
const ll maxn = 1e6 + 5;
const ll minn = 1e9 + 5;
const ll mod = 1000000007;
//ll a[maxn], b[maxn];
//bool vis[maxn];
int ans[maxn];
vector<int>v[maxn];
bool row[maxn], col[maxn];
//bool vis[maxn][maxn][2];
bool flag = 0;
int sum[maxn][10];
int cnt = 0;
int vis[maxn];
int a[maxn];
void dfs(int n) {
if(n > 10)
return ;
int x = a[4] * 100 + a[5] * 10 + a[6];
int y = a[7] * 100 + a[8] * 10 + a[9];
if(n == 10)
if(a[1]*a[3]*y + a[2]*y + a[3]*x == 10 * a[3]*y) {
cnt++;
return ;
}
for(int i = 1; i <= 9; i++) {
if(!vis[i]) {
vis[i] = 1;
a[n] = i;
dfs(n + 1);
vis[i] = 0;
}

}
return ;
}
int main() {
dfs(1);
cout << cnt << endl;
return 0;
}


举报

相关推荐

0 条评论