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

华为OJ:24点游戏算法

2019-11-08 00:45:54
字体:
来源:转载
供稿:网友

问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利 输入: 4个1-10的数字。[数字允许重复,测试用例保证无异常数字] 输出: true or false

输入描述: 输入4个int整数

输出描述: 返回能否得到24点,能输出true,不能输出false

输入例子: 7 2 1 10

输出例子: true

#include<iostream>#include<string>#include<cstring>#include<algorithm>#include<fstream>#define N 4using namespace std;int flag=0;int num[N];void solveByDfs(int index,int result,int num[]){ if(result==24) { flag=1; return ; } if(result > 24 || index>=4) return ; for(int choose=0; choose<4; choose++) { switch(choose) { case 0: solveByDfs(index+1,result+num[index],num); break; case 1: solveByDfs(index+1,result-num[index],num); break; case 2: solveByDfs(index+1,result*num[index],num); break; case 3: solveByDfs(index+1,result/num[index],num); break; } // if(flag) // return; }}int main(){ int test=0; while(cin>>num[0]>>num[1]>>num[2]>>num[3]) { flag=0; test=0; //sort(num,num+4); do { solveByDfs(0,test,num); } while(next_permutation(num,num+4)); if(flag) cout<<"true"<<endl; else cout<<"false"<<endl; } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表