// LeetCode_Combinations.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
void combine_recursive(int n,int k,int i,vector<int>& res,vector<vector<int> >&ret)
{
if(k==0)
{
ret.push_back(res);
//res.clear();
return;
}
if(i+k>n+1)
return;
res.push_back(i);
combine_recursive(n,k-1,i+1,res,ret);
res.pop_back();
combine_recursive(n,k,i+1,res,ret);
}
vector<vector<int> > combine(int n, int k) {
vector<vector<int> >ret;
if(n==0||k==0)
return ret;
vector<int> temp;
combine_recursive(n,k,1,temp,ret);
return ret;
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<vector<int> >ret;
ret = combine(5,3);
vector<vector<int> >::iterator iter1=ret.begin();
vector<int>::iterator iter2;
while(iter1!=ret.end())
{
iter2 = iter1->begin();
while(iter2!=iter1->end())
{
cout<<*iter2<<" ";
iter2++;
}
cout<<endl;
iter1++;
}
system("pause");
return 0;
}
剑指offer上也有,组合问题