本文共 460 字,大约阅读时间需要 1 分钟。
主要参考:
2010年中兴面试题
编程求解:
输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,
使其和等于 m ,要求将其中所有的可能组合列出来。
对于每个数都要算下,放与不放的情况:
void Find(int t,int sum,list & lst){ if(sum ==0) { list ::iterator it; for(it = lst.begin();it!=lst.end();++it) cout<<*it<<" "; cout<sum) return; if(t+1<=sum) Find(t+1,sum,lst); if(t<=sum) { lst.push_back(t); Find(t+1,sum - t,lst); lst.pop_back(); } }int main(){ list lst; Find(1,6,lst); return 0; }
转载地址:http://zieti.baihongyu.com/