组合-字典序打印所有排列
2013-08-17 19:55
169 查看
//要生成所有排列,就要考虑从当前序列生成下一字典序的序列 char s[51]; bool get(int n) { int i,j,k; for(j=n-1;j>0;j--)//从右向左找到最后一个正序尾的下标 { if(s[j]>s[j-1]) { i=j; break; } } if(!j)return false;//如果没有,则说明当前序列已经是最大字典序的序列 for(k=i+1;k { if(s[k]<=s[i-1])continue; if(s[k]>s[i-1])j=k; } char temp=s[j];//交换两数 s[j]=s[i-1]; s[i-1]=temp; sort(&s[i],&s );//再对i-1后的序列排序 return true; } //要找到所有排列,只需先将序列按字典序排好,再反复查找下一序列,直到找到最大字典序的序列 void print(int n) { if(get(n)) { cout<<s<<endl; print(n); } else return; }
相关文章推荐
- 形如数组1223打印所有不同的组合排列java
- 《牛客网剑指offer27题》输入一个字符串,按字典序打印出该字符串中字符的所有排列
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
- 《剑指Offer》面试题:按字典序打印出该字符串中字符的所有排列
- 排列组合-打印出一个数组的元素的所有排列方式-算法
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。C++
- 使用循环的方式打印字符串所有排列组合
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连.
- 给一个字符串(包含重复字符),打印它的所有可能的组合。
- 打印9!所有组合,并且计算行,列,对角之和为15的矩阵
- 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
- 该公司笔试题就1个,要求在10分钟内作完。 题目如下:用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列, 如:512234、412325等,要求:"4"不能在第三位,"3"与"5"不能相连。
- 从1-100中挑选出10个不同的数字,把可能的所有组合都打印出来
- n个里面选m个元素的所有排列+组合dfs
- 数理逻辑,打印8个命题的所有组合(用c语言实现)
- 打印出大小为n的数组(可能有重复元素)里所有可能的组合