给出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 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 下图接收小电路,谁知道原理
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度