1. 程式人生 > >十三:全排列-區間數排列

十三:全排列-區間數排列

ron pos sizeof 區間 return ret 輸入 fun string

問題:全排列-區間數排列
題目描述

對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("\n"); 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 }

十三:全排列-區間數排列