给出4个1-10的数字,通过加减乘除运算,得到数字为24就算胜利,除法指实数除法运算,本题对数字选取顺序无要求,但每个数字仅允许使用一次,且不考虑括号运算
此题允许数字重复,如3 3 4 4为合法输入,但是每个数字只允许使用一次,如此处一共有两个3,则运算过程中两个3都被选取计算一次,所以3被调用运算两次,但是对应读入的两个数字
给出4个1-10的数字,通过加减乘除运算,得到数字为24就算胜利
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 #include <stdio.h> #include <algorithm> using namespace std; const int N=4; int num[N]; int isSolve=0; void dfs(int index,int currentNum,int arr[]) { if(currentNum==24) { isSolve=1; return; } if(isSolve||currentNum>24||index>=4) return; for(int operFlag=0;operFlag<4;operFlag++) { switch(operFlag) { case 0: dfs(index+1,currentNum+arr[index],arr); break; case 1: dfs(index+1,currentNum-arr[index],arr); break; case 2: dfs(index+1,currentNum*arr[index],arr); break; case 3: dfs(index+1,currentNum/arr[index],arr); break; } if(isSolve) return; } } int main() { while(scanf("%d%d%d%d",&num[0],&num[1],&num[2],&num[3])>0) { isSolve=0; sort(num,num+4); do { dfs(1,num[0],num); if(isSolve) break; } while (next_permutation(num,num+4)); if(isSolve) printf("true\n"); else printf("false\n"); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 求MCSCANX 帮助
- ¥15 机器学习训练相关模型
- ¥15 Todesk 远程写代码 anaconda jupyter python3
- ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
- ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
- ¥20 关于URL获取的参数,无法执行二选一查询
- ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
- ¥15 marlin编译错误,如何解决?
- ¥15 有偿四位数,节约算法和扫描算法
- ¥15 VUE项目怎么运行,系统打不开