非递归:
class Solution {
public:
vector<vector<int>> combine(int n, int k) {
vector<int> states;
vector<vector<int>> results;
for (int i=0;i<k;i++) states.push_back(i+1);
auto cur_pos = states.end()-1;
while(states[0]!=n-k+1)
{
results.push_back(states);
if (*cur_pos<n) (*cur_pos)++;
else
{
while((states.end()-1-cur_pos==n-(*cur_pos)) && cur_pos>states.begin()) cur_pos--;
int t=(*cur_pos)+1;
for (auto i = cur_pos;i<states.end();i++) (*i)=(i-cur_pos)+t;
cur_pos = states.end()-1;
}
}
results.push_back(states);
return results;
}
};