基于visual Studio2013解决面试题之1305字符串所有子集
来源:互联网 发布:如何开淘宝店铺 编辑:程序博客网 时间:2024/05/24 05:31
题目
解决代码及点评
/* 若S是n个元素的集合,则S的幂集P(S)定义为S所有子集的集合。例如, S=(a,b,c),P(S)={() ,(a),(b),(c),(a,b),(a,c),(b,c),(a,b,c)}给定S,写一递归算法求P(S)。*/#include <iostream>#include <string>using namespace std;char nArrTmp[20] = {0}; //如果使用过元素 则定义其为1bool DecreaseArr(char *pnArr, int nLen){ for (int i = 0; i < nLen; i++) { if (pnArr[i] < pnArr[i+1]) { return false; } } return true;}//pnArr 原集合 pnArrb子集的集合 n:子集中元素个数 void Select(char *pnArr, char *pnArrb, int n, int K){ if (n >= 0) { for (int i = 0; i < strlen(pnArr); i++) { if (nArrTmp[i] == 0) { pnArrb[n] = pnArr[i]; nArrTmp[i] = 1; Select(pnArr, pnArrb, n-1, K); nArrTmp[i] = 0; } } } else { if (DecreaseArr(pnArrb, K)) { cout<<"("; for (int i = 0; i < K; i++) { cout<<pnArrb[i]<<" "; } cout<<")"<<endl; } }} int main() { char *pszBuf = "abc"; cout<<"()"<<endl; for (int i = 1; i <= strlen(pszBuf); i++) { char *pszBufb = new char[i]; Select(pszBuf, pszBufb, i-1, i); } system("pause"); return 0;}/*有40亿个整数,在文件里保存,现在要找出这个文件里没有的某个整数,找到一个就行这个40亿个整数大概要花掉4G内存,全部读出来是不可取的我们可以通过位域来标记哪些存在哪些不存在这样一个整数可以表示32个整数的存在情况,需要的内存是4G/32 = 1G/8 = 128M然后将整数一个个读出来,根据整数的值,标记位域,最后再查找位域,哪个位置是0即可*/#include <iostream>#include <stdio.h> using namespace std;#define BITSPERWORD 32 #define SHIFT 5 #define MASK 0x1F #define N 10000000 int a[1 + N/BITSPERWORD]; void set(int i) { a[i>>SHIFT] |= (1 <<(i & MASK)); //第i位清零} void clr(int i){ a[i>>SHIFT] &= ~(1 <<(i & MASK)); //第i位1} int test(int i){ return a[i>>SHIFT] & (1 <<(i & MASK)); } int main(){ int i; for (i = 0; i < N; i++) clr(i); while (scanf_s("%d", &i) != EOF) set(i); i = 0;while(i<N){if (test(i)) cout<< i<<" ";i++;}system("pause");return 0; }
代码下载及其运行
代码下载地址:http://download.csdn.net/detail/yincheng01/6704519
解压密码:c.itcast.cn
下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:
1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”
2)在下拉框中选择相应项目,项目名和博客编号一致
3)点击“本地Windows调试器”运行
程序运行结果
0 0
- 基于visual Studio2013解决面试题之1305字符串所有子集
- 基于visual Studio2013解决面试题之1309求子集
- 基于visual Studio2013解决面试题之0403串联字符串
- 基于visual Studio2013解决面试题之0801对称字符串
- 基于visual Studio2013解决面试题之1003字符串逆序
- 基于visual Studio2013解决面试题之1009兄弟字符串
- 基于visual Studio2013解决面试题之1102合并字符串
- 基于visual Studio2013解决面试题之1105字符串压缩
- 基于visual Studio2013解决面试题之0204最大子集数组
- 基于visual Studio2013解决面试题之0201二叉树转链表
- 基于visual Studio2013解决面试题之0203栈实现
- 基于visual Studio2013解决面试题之0205查找路径
- 基于visual Studio2013解决面试题之0207单词翻转
- 基于visual Studio2013解决面试题之0202上下排
- 基于visual Studio2013解决面试题之0301累加
- 基于visual Studio2013解决面试题之0303数组求和
- 基于visual Studio2013解决面试题之0308Fibonacci数列
- 基于visual Studio2013解决面试题之0407数组差
- C# WebBrowser实现网页自动填表
- Android 疑问汇总
- git使用
- myeclipse链接本地derby数据库
- QT数据类型转换
- 基于visual Studio2013解决面试题之1305字符串所有子集
- Oracle常用知识小结
- DSP/BIOS程序开发三:API简介
- XE3使用Spirit写解析器
- Insert Interval
- Java继承--问题
- UVa414 - Machined Surfaces- 字符串-难度1
- OpenCV笔记:图像边缘检测Sobel,Laplace,Canny
- ##、“...”、_ _VA_ARGS_ _