题目描述:
看下面的算式:
□□ x □□ = □□ x □□□
它表示:两个两位数相乘等于一个两位数乘以一个三位数。
如果没有限定条件,这样的例子很多。
但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。
该算式中1至9的每个数字出现且只出现一次!
比如:
46 x 79 = 23 x 158
54 x 69 = 27 x 138
54 x 93 = 27 x 186
.....
请编程,输出所有可能的情况!
注意:
左边的两个乘数交换算同一方案,不要重复输出!
不同方案的输出顺序不重要
解题思路:
此题为搜索题,将上述四个数用a,b,c,d表示,这四个数一共九位,每位是1-9这九个数中的一个,所以每确定一组数dfs九次,每次将1-9这九个数都试探一下,并记录a,b,c,d的具体值,记录方式为id=1,表示a的十位;id=2,表示个位,以此类推。
注意:每组dfs后需要把访问标记数组以及a,b,c,d,还原为前面的状态。
代码如下:
<pre name="code" class="cpp">#include<iostream>
#include<string.h>
using namespace std;
int a,b,c,d; //a*b=c*d
bool visit[10]; //访问标记数组
bool com

1987

被折叠的 条评论
为什么被折叠?



