给出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 PointNet++的onnx模型只能使用一次
- ¥20 西南科技大学数字信号处理
- ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
- ¥30 STM32 INMP441无法读取数据
- ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。