//第七届蓝桥杯软件类省赛真题-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;}*/
新闻热点
疑难解答