[剑指offer]求字符的所有组合
来源:互联网 发布:java中贪心算法 编辑:程序博客网 时间:2024/06/08 01:01
这道题实在剑指offer上的扩展题(面试题28),思路很简单,自己实现了下,练习一下对vector的使用。
代码如下:
#include <iostream>#include <vector>using namespace std;void combinationAllSubSub(std::vector<int> inputData, int number, int numberth, std::vector<int> &oneReturnData, std::vector<std::vector<int> > &returnData){ //剪枝:排除不可能事件 if(inputData.size() - numberth + oneReturnData.size() < number) return; if(number == oneReturnData.size()){ //找到了长度为number的combination //如果有重复数字,则需要在此检测returnData是否存在oneReturnData returnData.push_back(oneReturnData); return; } // add this node to combination oneReturnData.push_back(inputData[numberth]); combinationAllSubSub(inputData, number, numberth+1, oneReturnData, returnData); oneReturnData.pop_back(); // do not add this node to combination combinationAllSubSub(inputData, number, numberth+1, oneReturnData, returnData);}//求长度为number的组合std::vector<std::vector<int> > combinationAllSub(std::vector<int> inputData, int number){ std::vector<int> oneReturnData; std::vector<std::vector<int> > returnData; combinationAllSubSub(inputData, number, 0, oneReturnData, returnData); return returnData;}//求所有的组合std::vector<std::vector<int> > combinationAll(std::vector<int> inputData){ std::vector<std::vector<int> > returnData; for(int i = 1;i <= inputData.size(); ++i){ std::vector<std::vector<int> > tempReturnData = combinationAllSub(inputData, i); returnData.insert(returnData.end(), tempReturnData.begin(), tempReturnData.end()); } return returnData;}void display(std::vector<std::vector<int> > resultData){ for(int i = 0;i < resultData.size(); ++i){ std::vector<int> temp = resultData[i]; for(int j = 0; j < temp.size(); ++j) cout << temp[j] << " "; cout << endl; }}int main(){ int data[] = {1,1,1}; std::vector<int> inputData(data, data+sizeof(data)/sizeof(int)); std::vector<std::vector<int> > resultData = combinationAll(inputData); cout << "size:" << resultData.size() << endl; display(resultData); return 0;}
0 0
- 剑指offer:求字符的所有组合
- [剑指offer]求字符的所有组合
- [剑指offer]求字符数组的所有组合
- 剑指offer(求字符的所有组合)
- 剑指Offer中面试题28的扩展问题(求字符的所有组合)
- 求字符的所有组合!
- 【剑指offer】面试题:求字符串的所有组合
- 剑指Offer----面试题28----扩展:字符的所有组合
- 《剑指Offer》:求字符串的组合
- 求一个字符串中所有字符的组合
- 求一个字符串中所有字符的组合
- 字符的所有组合
- 《剑指Offer》读书笔记---面试题28:字符串的排列,(扩展:求字符串的所有组合)
- 求字符串的所有组合
- 求字符串的所有组合
- 求字符串的所有组合
- 求字符串的所有组合输出
- 求字符串中元素的所有组合
- struts2零配置(2)
- 如何将图片,声音,影像等文件读入字节数组中
- linxu find 命令 搜索字符串
- Python学习之路——强力推荐的Python学习资料
- 由吃饭想到的产品痛点问题
- [剑指offer]求字符的所有组合
- 目前才知道关于rar的真相
- 二分查找与递归算法
- XCode环境变量及路径设置以及绝对和相对路径
- 第2条:遇到多个构造器参数时要考虑用构建器
- Windows下安装使用OpenLDAP
- ARM体系结构介绍
- 双系统重装系统后,grub命令行修复linux系统
- HDU 3416 —— Marriage Match IV(最短路+最大流)