【深度优先搜索】练习题:寻找算式
题目描述
请用1-9的9个数字组成一个成立的算式,例:124 + 659 = 783
请输出所有的算式。
输入样例
无
输出样例
无
输入
无
输出
请输出所有的算式。
答案:
using namespace std;
int a[10];
bool b[10];
void dfs(int step)
{
if (step == 10)
{
// 判断并输出
int x = a[1] * 100 + a[2] * 10 + a[3];
int y = a[4] * 100 + a[5] * 10 + a[6];
int z = a[7] * 100 + a[8] * 10 + a[9];
if (x + y == z)
{
cout << x << "+" << y << "=" << z << endl;
}
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);
return 0;
}