#include <vector>
// 这个必须加上,要不然报错
#include <iostream>
// 这个必须加上,要不然报错
#include <cmath>
// 这个必须加上,要不然报错
#include "leetcode279_24Game.h"
using namespace std;
// 这个必须加上,要不然报错
class Solution {
public:
bool judgePoint24(vector<int> nums){
cout << "这是个引用吗?:" <<endl;
for(int i=0 ;i<nums.size();i++){
nums[i] = 9;
cout<< nums[i] <<" ";}
// cout<<endl;
return judge24({nums.begin(), nums.end()}); }
static bool judge24(vector<double> nums) {
auto n = nums.size();
if(n == 1) return abs(nums[0] - 24) < 1e-10;
sort(nums.begin(), nums.end());
// For each permutation,
do {
// merge the last two numbers.
vector<double> temp(nums.begin(), nums.end()-1);
auto a = nums[n-1], b = nums[n-2];
for(auto num: {a+b, a-b, a*b, a?b/a:0}){
// For each merged number, combine with the rest and test it
temp.back() = num;
if(judge24(temp)) return true;
}
} while(next_permutation(nums.begin(), nums.end()));
return false;
}
};
int main(){
bool a;
vector<int> nums = {7, 1, 5, 3, 6, 4};
for(int i=0 ;i<nums.size();i++)
cout<<nums[i]<<" ";
cout<<endl;
Solution s;
a = s.judgePoint24(nums);
cout << "Box2 的体积:" << a <<endl;
for(int j=0 ;j<nums.size();j++){
cout << "修改后:" << nums[j] <<" ";}
cout<<endl;
return 0;
}
c++刷leetcode入门
最新推荐文章于 2024-09-03 22:33:53 发布
本文介绍了一种解决24点游戏的算法实现,通过使用递归和排列组合的方法,判断给定的四个数字是否能通过加减乘除运算得到24。代码中详细展示了如何利用vector和sort进行数据操作,以及如何通过next_permutation生成所有可能的数字组合。
摘要由CSDN通过智能技术生成