c++刷leetcode入门

本文介绍了一种解决24点游戏的算法实现,通过使用递归和排列组合的方法,判断给定的四个数字是否能通过加减乘除运算得到24。代码中详细展示了如何利用vector和sort进行数据操作,以及如何通过next_permutation生成所有可能的数字组合。
摘要由CSDN通过智能技术生成
#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;
}

缺少了就会报错呀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值