十三:全排列-區間數排列
阿新 • • 發佈:2017-12-29
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 }
十三:全排列-區間數排列