深度优先搜索练习题:填数字

Posted 坤坤的编程世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度优先搜索练习题:填数字相关的知识,希望对你有一定的参考价值。

填数字


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

比如:

6+8/3+952/714就是一种解法,


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

    b     def 

a + - + --- = 10

    c     ghi


输出

输出一个整数,表示算式的解的总数。


答案:

#include <iostream>using namespace std;
int a[11],cnt;bool b[11];void dfs(int step){ if(step == 10 ) { float sum1 = a[2]; float sum2 = a[4] * 100 + a[5] * 10 + a[6]; float sum3 = a[7] * 100 + a[8] * 10 + a[9]; if(a[1] + sum1 / a[3] + sum2 / sum3 == 10)        { cnt++; } return; } for(int i = 1;i<=9;i++) { if(b[i] == 0) { a[step] = i; b[i] = 1; dfs(step + 1); b[i] = 0; } }}int main(){ dfs(1); cout<<cnt; return 0;}




以上是关于深度优先搜索练习题:填数字的主要内容,如果未能解决你的问题,请参考以下文章

算法导论22.3深度优先搜索 练习总结 (转载)

搜索算法

搜索算法

搜索算法

P3294 [SCOI2016]背单词

2016.6.10 深度优先搜索练习