凑算式 dfs

来源:互联网 发布:php 统计在线人数代码 编辑:程序博客网 时间:2024/06/10 00:15

B DEF 
A + — + ——- = 10 
C GHI

(如果显示有问题,可以参见【图1.jpg】)

这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

比如: 
6+8/3+952/714 就是一种解法, 
5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法?

注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

这里写图片描述 

思路:

       只是比dfs全排列多了一个比较等式的步骤

代码:

#include<iostream>#include<algorithm>using namespace std;int a[10]={0},v[10]={0},cnt=0;int js(){int x,y;x=a[4]*100 + a[5]*10 + a[6];y=a[7]*100 + a[8]*10 + a[9];if (a[1]*a[3]*y + y*a[2] + a[3]*x == 10*a[3]*y)  return 1;return 0;}int dfs(int n){int i,j;for (i=1;i<=9;i++){if (!v[i]){v[i]=1;a[n]=i;if (n<9) { dfs(n+1); }else { if (js())   cnt++; }  v[i]=0; }}}int main(){dfs(1);cout<<cnt;return 0;}


0 0
原创粉丝点击