问题描述:给出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;}新闻热点
疑难解答