第七届蓝桥杯软件类省赛真题-C-B-3_凑算式

//第七届蓝桥杯软件类省赛真题-C-B-3_凑算式 
/*
题目: 
凑算式

A + B/C + DEF/GHI = 10

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

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

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

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

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

/*【解题思路】
解法一:暴力枚举
解法二:深度优先搜索 
答案:
29
*/

#include<iostream>
using namespace std;

int main()
{
	double a,b,c,d,e,f,g,h,i;
	int count = 0;
	for(a = 1.0;a <= 9.0;a++)
		 for(b = 1.0;b <= 9.0;b++)
		 	for(c = 1.0;c <= 9.0;c++)
		 		for(d = 1.0;d <= 9.0;d++)
		 			for(e = 1.0;e <= 9.0;e++)
		 				for(f = 1.0;f <= 9.0;f++)
		 					for(g = 1.0;g <= 9.0;g++)
		 						for(h = 1.0;h <= 9.0;h++)
		 							for(i = 1.0;i <= 9.0;i++){
		 								if(a != b && a != c && a != d && a != e && a != f && a != g && a != h && a != i
										  && b != c && b != d && b != e && b != f && b != g && b != h && b != i
										   && c != d && c != e && c != f && c != g && c != h && c != i
										    && d != e && d != f && d != g && d != h && d != i
											 && e != f && e != g && e != h && e != i
											  && f != g && f != h && f != i
											   && g != h && g != i
											    && h != i){
											    	if(a+b/c+(d*100+e*10+f)/(g*100+h*10+i) == 10.0){
//											    		cout<<"a="<<a<<" b="<<b<<" c="<<c<<" d="<<d<<" e="<<e<<" f="<<f
//											    		<<" g="<<g<<" h="<<h<<" i="<<i<<endl;
											    		count++;
													}
												}
									 }
	cout<<"这个算式共有的解法种数为:"<<count<<endl;
	return 0;
}

/*
#include<iostream>
using namespace std;

double a[9];
bool visit[9];

int count = 0;

void dfs(int step)
{
	if(step == 9)
	{
		if(a[0]+a[1]/a[2]+(a[3]*100+a[4]*10+a[5])/(a[6]*100+a[7]*10+a[8]) == 10.0){
			count++;
		}
		return;
	}
	for(int i = 0;i < 9;i ++)
	{
		if(visit[i] == false)
		{
			a[step] = i+1.0;
			visit[i] = true;
			dfs(step+1);
			visit[i] = false;
		}
	}
	return;
}

int main()
{
	dfs(0);
	cout<<"这个算式共有的解法种数为:"<<count<<endl;
	return 0;
}
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值