2 lyn lin Lyn_Lin 于 2014.11.12 20:31 提问

请教大神:如何使全排列按从小到大的顺序输出?

现在只能输出全排列。

代码如下:

#include
int main()
{
void change(int *a,int *b,int temp);
void pai(int *num,int i,int n);
int num[10];
int i,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;++i)
num[i]=i+1;
pai(num,0,n-1);
printf("\n");
}
return 0;

}

void change(int *a,int *b,int temp)
{
temp=*a;
*a=*b;
*b=temp;
}

void pai(int*num,int i,int n)
{
int j,temp;
void change(int *a,int *b,int temp);
if(i==n)
{
printf("(%d",num[0]);
for(j=1;j<=n;++j)
printf(", %d",num[j]);
printf(")");
}
else
{
for(j=i;j<=n;++j)
{
change(&num[i],&num[j],temp);
pai(num,i+1,n);
change(&num[i],&num[j],temp);
}
}

}

求教O(∩_∩)O

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
字符串的全排列——按字典顺序
题目1369:字符串的排列 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2675 解决:677 题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入: 每个测试案例包括1行。 输入一个字符串,长度不超过9(可能
按字典序打印字符串的所有全排列
要用迭代,最后将结果保存时一定要用指针关键: string(str)s[i]&amp;gt;s[j] func permu(list *[]string,str []byte, i int ) { if str ==nil { return } if i ==len(str)-1 { *list = append(*list,string(str)) }else { for j :...
1~N的n个数按大小顺序的全排列的c程序
代码非常简洁,只有不到40行,是一个大牛写的,我也没有看懂。保证可用,大家可以下载下来一起学习一下。
C语言作业|全排列(升序)
Description 输入一个整数 n(1 Input 3 Output 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 Hint 输出的顺序按第一个数从小到大排列,若第一个数相同,则按第二个数排列,以此类推。使用递归 #include int n; int ary[9]; void swapAry(int x
全排列 方法:全排列函数和递归和字典序
题目描述给你一个字符串,按字典序从小到大输出这个字符串的全排列输入一个由小写字母组成的长度小于等于8的不含重复字符的字符串输出按字典序从小到大输出这个字符串的全排列样例输入abc样例输出abc acb bac bca cab cba1 递归 但运行出来不是字典序  递归序#include &amp;lt;iostream&amp;gt; #include &amp;lt;string.h&amp;gt; using namesp...
对输入的字符串按字典顺序输出所有的全排列,字符串可以由重复字符
思路:  1、把字符串看成俩部分,第一个字符和后面的整个快;  2.、每次把第一个字符和后面的一个交换,  3,固定第一个字符然后对后面的字符块进行全排列  4、对后面字符串的全排列可以依旧这样递归     void PermutationHelp(vector &ans, int k, string str) //遍历第k位的所有可能     {         if(k == s
输出一个字符串的全排列
输出一个字符串的全排列 输出一个字符串的全排列 给出一个字符串S(可能又重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = "1312", 输出为: 1123 1132 1213 1231 1312 1321 2113 2131 2311 3112 3121 3211 Input 输入一个字符串S(S的长度 <= 9,且只包括0 - 9的阿拉伯数字) OutP
输入一组整数,按从小到大顺序的输出
 #include int main() {  int a[10];  int i,j,k;  while(1)  {  printf("请输入十个整数:");  for(i=0;i   scanf("%d",&a[i]);  for(j=0;j  {   for(i=0;i   {    if(a[i]>a[i+1])    {     k=a[i];  
一组数字的全排列按序输出
全排列 按序输出 间接递归 算法分析 问题 策略
给定一个字符串数组。按照字典顺序进行从小到大的排序
思路:  * 1,对数组排序。可以用选择,冒泡都行。  * 2,for嵌套和比较以及换位。  * 3,问题:以前排的是整数,比较用的比较运算符,可是现在是字符串对象。  *   字符串对象怎么比较呢?爽了,对象中提供了用于字符串对象比较的功能。  *  *  */ public class StringTest_1