全排列和组合
2012-11-18 11:48
169 查看
最近准备M$面试,练习写了很多基础的code,很多是以前想了想没什么思路就放弃的题,如果面试过了,我会把剩下的陆续的发上来。
这个排列组合算法参数有点多,不过是原创的
,我觉得这两个算法组合在一起还能产生更多的题目,所以就先放上来,备份一下。
没什么测试,只是试了两个组数证明大概思路应该没问题,就过了,时间紧迫啊!
全排列
组合
这个排列组合算法参数有点多,不过是原创的
,我觉得这两个算法组合在一起还能产生更多的题目,所以就先放上来,备份一下。
没什么测试,只是试了两个组数证明大概思路应该没问题,就过了,时间紧迫啊!
全排列
void Perm(char str[], int len, char result[], int index) { assert(str!=NULL); assert(result!=NULL); assert(len>=0); assert(index>=0); if(index==len)// get & print the result { for(int i=0;i<len;i++) { printf("%c ", result[i]); } printf("\n"); return; } int j=0; for(int i=0;i<len;i++) { while(str[j]==-1 && j<len)j++; if(j==len)return; // all element has been used result[index] = str[j]; str[j] = -1; // this element in using Perm(str, len, result, index+1); str[j] = result[index]; // revert back j++; // this element has been used } } void PermTest() { /*char str[5] = {'a','b','c','d','e'}; char result[5]; Perm(str, 5, result,0);*/ char str[3] = {'a','b','c'}; char result[3]; Perm(str, 3, result,0); }
组合
void Combine(char str[], int n, int m, int index, char result[], int resultIndex, int resultLen) {// str - data, index - current data we are reading, resultIndex - the index of result which we are combining assert(str!=NULL); assert(result!=NULL); if((resultLen - resultIndex) > (n-index)) return; // don't have enough elements to combine if(m==0) { for(int i=0;i<resultIndex;i++) { printf("%c ", result[i]); } printf("\n"); return; } for(int i=index;i<n;i++) { result[resultIndex] = str[i]; Combine(str, n, m-1, i+1, result, resultIndex+1, resultLen); } } void CombineTest() { char str[5] = {'a','b','c','d','e'}; char result[3]; Combine(str, 5, 3, 0, result, 0, 3); }
相关文章推荐
- java排列组合算法代码实现
- 面试题:一个整型数组中各元素排列组合得到的最大的一个数 ,比如,1,3,9,11,23,233,911 要得到:9,911,3,233,23,11,1
- 18 获取给定的序列的所有排列, 组合
- zoj 3747 排列组合dp
- Sicily 1018. A Card Trick【排列组合】
- js实现简单排列组合的方法
- 有1,2,2,3,4,5六个数,要求输出他们组合的全排列
- HDU 2048 2049 (错排,排列组合)
- 排列组合中的搜索
- 排列组合 "n个球放入m个盒子m"问题 总结
- JS实现的全排列组合算法示例
- 数学排列组合,阶乘在线计算器
- “金箍咒”我的全排列组合算法设计演化之二有趣的分解式嵌套
- 排列组合之错排问题总结
- 字符串的全排列和组合算法
- HDU 5719Arrange(类似排列组合问题)
- 排列组合问题的C++代码
- 【笔试/面试】排列组合与概率计算(二)
- 排列组合问题1
- 手机键盘上的排列组合问题 Letter Combinations of a Phone Number