377. 组合总和 Ⅳ(leetcode)
https://leetcode.cn/problems/combination-sum-iv/description/
此篇题解解释了为什么不能直接用二维完全背包的方式做
不过还是建议把这个题当成一个爬楼梯来做
class Solution {
public:
int combinationSum4(vector<int>& nums, int target) {
// f[i]表示若干数中选择,所能得到的值为i的个数(爬楼梯)
// 以第i个数选择多少来划分子集
// f[i] = f[i-nums[0]] + f[i-nums[1]] + f[i-nums[2]] + ... + f[i-nums[size-1]]
// f[0] = 1
// 答案是f[target]
unsigned int f[target+10];
memset(f,0,sizeof f);
f[0]=1; // 不选物品,能拿0的选法种数
for(int j=0;j<=target;j++)
{
for(int i=0;i<nums.size();i++)
if(j>=nums[i])
f[j]+=f[j-nums[i]];
}
return f[target];
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】