首页 > 学院 > 开发设计 > 正文

第七届蓝桥杯软件类省赛真题-C-C-3_寒假作业

2019-11-08 20:21:18
字体:
来源:转载
供稿:网友
//第七届蓝桥杯软件类省赛真题-C-C-3_寒假作业/*寒假作业现在小学的数学题目也不是那么好玩的。看看这个寒假作业:【】+【】=【】【】-【】=【】【】*【】=【】【】/【】=【】  每个方块代表1~13中的某一个数字,但不能重复。比如: 6  + 7 = 13 9  - 8 = 1 3  * 4 = 12 10 / 2 = 5 以及: 7  + 6 = 13 9  - 8 = 1 3  * 4 = 12 10 / 2 = 5 就算两种解法。(加法,乘法交换律后算不同的方案) 你一共找到了多少种方案? 请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。*//*【解题思路】解法:深度优先搜索或暴力枚举,其中要遍历搜索13个数,有可能导致系统栈内存溢出,故需逐步判断优化 答案:64*/#include<iostream>using namespace std;int a[12];bool visit[13];int count = 0;void dfs(int step){	if(step == 3)//逐步判断1	{		if((a[0]+a[1]) != a[2])			return;	}	if(step == 6)//逐步判断2	{		if( (a[3]-a[4]) != a[5] )			return;	}	if(step == 9)//逐步判断3	{		if( (a[6]*a[7]) != a[8] )			return;	}	if(step == 12)//逐步判断4	{		if((a[0]+a[1]) == a[2] && (a[3]-a[4]) == a[5] && (a[6]*a[7]) == a[8] && (a[11]*a[10]) == a[9]){				count++;		}		return;	}	for(int i = 0;i < 13;i ++)	{		if(visit[i] == false)		{			a[step] = i+1;			visit[i] = true;			dfs(step+1);			visit[i] = false;		}	}	return;}int main(){	dfs(0);	cout<<"方案总数为:"<<count<<endl;	return 0;}/*#include<iostream>using namespace std;int main(){	int a[12];	int count = 0;	for(a[0] = 1;a[0] <= 13;a[0]++)		 for(a[1] = 1;a[1] <= 13;a[1]++)		 	for(a[2] = 1;a[2] <= 13;a[2]++){		 				 		if((a[0]+a[1]) != a[2])//逐步判断1		 			continue;		 					 		for(a[3] = 1;a[3] <= 13;a[3]++)		 			for(a[4] = 1;a[4] <= 13;a[4]++)		 				for(a[5] = 1;a[5] <= 13;a[5]++){		 							 					if((a[3]-a[4]) != a[5])//逐步判断2		 						continue;		 								 					for(a[6] = 1;a[6] <= 13;a[6]++)		 						for(a[7] = 1;a[7] <= 13;a[7]++)		 							for(a[8] = 1;a[8] <= 13;a[8]++){		 										 								if((a[6]*a[7]) != a[8])//逐步判断3		 									continue;		 											 									for(a[9] = 1;a[9] <= 13;a[9]++)												for(a[10] = 1;a[10] <= 13;a[10]++)													for(a[11] = 1;a[11] <= 13;a[11]++){																												if((a[11]*a[10]) != a[9])//逐步判断4		 													continue;		 																				 							if(a[0] != a[1] && a[0] != a[2] && a[0] != a[3] && a[0] != a[4] && a[0] != a[5] && a[0] != a[6] && a[0] != a[7] && a[0] != a[8] && a[0] != a[9] && a[0] != a[10] && a[0] != a[11]														 	&& a[1] != a[2] && a[1] != a[3] && a[1] != a[4] && a[1] != a[5] && a[1] != a[6] && a[1] != a[7] && a[1] != a[8] && a[1] != a[9] && a[1] != a[10] && a[1] != a[11]															  && a[2] != a[3] && a[2] != a[4] && a[2] != a[5] && a[2] != a[6] && a[2] != a[7] && a[2] != a[8] && a[2] != a[9] && a[2] != a[10] && a[2] != a[11]															    && a[3] != a[4] && a[3] != a[5] && a[3] != a[6] && a[3] != a[7] && a[3] != a[8] && a[3] != a[9] && a[3] != a[10] && a[3] != a[11]																 && a[4] != a[5] && a[4] != a[6] && a[4] != a[7] && a[4] != a[8] && a[4] != a[9] && a[4] != a[10] && a[4] != a[11]																  && a[5] != a[6] && a[5] != a[7] && a[5] != a[8] && a[5] != a[9] && a[5] != a[10] && a[5] != a[11]																   && a[6] != a[7] && a[6] != a[8] && a[6] != a[9] && a[6] != a[10] && a[6] != a[11]																    && a[7] != a[8] && a[7] != a[9] && a[7] != a[10] && a[7] != a[11]																	 && a[8] != a[9] && a[8] != a[10] && a[8] != a[11]																	  && a[9] != a[10] && a[9] != a[11]																	   && a[10] != a[11]){																																					if((a[0]+a[1]) == a[2] && (a[3]-a[4]) == a[5] && (a[6]*a[7]) == a[8] && (a[11]*a[10]) == a[9]){																				count++;																			}																    																		}														}									 }																 }		 								 }		 			cout<<"方案总数为:"<<count<<endl;	return 0;}*/
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表