十三:全排列-区间数排列

问题:全排列-区间数排列
题目描述

对n和m之间的数进行全排列(包括n和m,且:0<n<m<30),并且输出所有的排列结果
输入
两个整数,分别为n和m
输出
n和m之间所有数的全排列结果
样例输入
5 7
样例输出
5 6 7

5 7 6
6 5 7
6 7 5
7 5 6

7 6 5

 1 #include<stdio.h>
 2 #include<string.h>
 3 int n,m;
 4 void fun(int b[],int k){
 5     int i,j;
 6     int t;
 7     if(!b[k]){
 8         for(i=0;b[i];i++){
 9             if(i==m-n)
10             printf("%d",b[i]);
11             else 
12             printf("%d ",b[i]);
13             }
14         printf("
");
15         return;
16     } 
17     for(i=k;i<=m-n;i++){
18         t=b[i];
19         for( j=i-1 ; j>=k ; j-- )     
20               b[j+1]=b[j];     
21         b[k]=t; 
22         fun(b,k+1);
23         t=b[k];
24         for( j=k ; j<=i ; j++)     
25               b[j]=b[j+1];     
26         b[i]=t; 
27     }
28     
29 }
30 int main(){
31     int k=0;
32     int b[30];
33     int i,l=0;
34     memset(b,0,sizeof(b));
35     scanf("%d%d",&n,&m);
36     for(i=n;i<=m;i++) b[l++]=i;
37     fun(b,k);
38     return 0;
39 }
原文地址:https://www.cnblogs.com/yuming226/p/8146428.html