LeetCode 77.组合

it2022-05-05  132

给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。

示例:

输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]

算法:基础的dfs题目。我们在枚举的时候可以考虑选和不选两种情况即可。

class Solution { public: vector<vector<int>>res; void dfs(int u,int sum,int state, int n, int k){ if(sum+n-u<k)return ; if(sum==k){ vector<int>path; for(int i=0;i<n;i++) if(state>>i&1) path.push_back(i+1); res.push_back(path); return ; } dfs(u+1,sum+1,state|(1 << u),n,k); dfs(u+1,sum,state,n,k); } vector<vector<int>> combine(int n, int k) { dfs(0,0,0,n,k); return res; } };

 

转载于:https://www.cnblogs.com/programyang/p/11154040.html


最新回复(0)