凑算式(枚举与深度优先搜索)
来源:互联网 发布:淘宝如何导出买家信息 编辑:程序博客网 时间:2024/04/29 15:06
凑算式
如图,这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
思路一:
可以用枚举暴力算法
#include <stdio.h>
int main()
{ double a,b,c,d,e,f,g,h,i;
int sum=0;
for( a=1; a<=9; a++)
for( b=1; b<=9; b++)
{
if(a==b) continue;
for( c=1; c<=9; c++)
{
if(c==a||c==b) continue;
for( d=1; d<=9; d++)
{
if(d==a||d==b||d==c)continue;
for( e=1; e<=9; e++)
{
if(e==a||e==b||e==c||e==d) continue;
for( f=1; f<=9; f++)
{
if(f==a||f==b||f==c||f==d||f==e) continue;
for( g=1; g<=9; g++)
{
if(g==a||g==b||g==c||g==d||g==e||g==f) continue;
for( h=1; h<=9; h++)
{
if(h==a||h==b||h==c||h==d||h==e||h==f||h==g) continue;
for( i=1; i<=9; i++)
{
if(i==a||i==b||i==c||i==d||i==e||i==f||i==g||i==h) continue;
if(a+b/c+(d*100+e*10+f)/(g*100+h*10+i)==10)
sum++;
}
}
}
}
}
}
}
}
printf("%d",sum);
return 0;
}
思路二:
深度优先搜索
#include<stdio.h>
double a[10];
int book[10],sum;
void fun(int step)
{
int i;
if(step==10)
{
if(a[1]+a[2]/a[3]+(a[4]*100+a[5]*10+a[6])/(a[7]*100+a[8]*10+a[9])==10)
{sum++;
}
return;
}
for(i=1;i<=9;i++)
{
if(book[i]==0)
{
a[step]=i;
book[i]=1;
fun(step+1);
book[i]=0;
}
}
return;
}
int main()
{
fun(1);
printf("%d",sum);
return 0;
}
- 凑算式(枚举与深度优先搜索)
- 枚举与深度优先搜索
- [dfs(深度优先搜索)]简单类题目 2016年蓝桥杯省赛题第三题——凑算式
- 深度优先搜索与广度优先搜索
- 深度优先搜索与广度优先搜索
- 广度优先搜索与深度优先搜索
- 深度优先搜索与广度优先搜索
- 广度优先搜索与深度优先搜索
- 深度优先搜索与广度优先搜索
- 深度优先搜索与广度优先搜索
- 深度优先搜索与宽度优先搜索
- 深度优先搜索与广度优先搜索 .
- 深度优先搜索与广度优先搜索
- 深度优先搜索与广度优先搜索
- 深度优先搜索与广度优先搜索
- 深度优先搜索与广度优先搜索
- 深度优先搜索与广度优先搜索
- 广度优先搜索与深度优先搜索
- python第二篇
- 1086. Tree Traversals Again (25)解题报告
- 16进制转8进制(java)
- C++(8):指向不同类型变量或函数的pointer
- php留言板的简单编写
- 凑算式(枚举与深度优先搜索)
- JavaScript Study 2(类型、值和变量)
- POJ 2395 prim
- java基础练习 特殊的数字
- C++(9):this指针
- myeclipse10.6无法检出svn项目的问题,我的一个笨办法
- 【UVa】11636 - Hello World!
- WIN7+MSVC2013_X86+QT5.7.0编QtWebEngine
- java集合框架增强