首页 > 代码库 > TOJ---2621--全排列
TOJ---2621--全排列
这个方法 是超神教我的 --- 全排列的方法太多种了 感觉他这种写的 字典序法 是最简单的 最容易让人接受的
而且在时间复杂度和空间复杂度上 都可以让人接受
我待会将具体每步做法简要写一下...-> 我现在被一个 三角形给 深深烦死了 。。。。。。贴个代码 来 缓解下.....
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 5 int arr[30]; 6 const int inf = 0x3f3f3f3f; 7 8 int main() 9 {10 int n , temp;11 int t;12 int i , j , k;13 while( ~scanf("%d",&t) )14 {15 while( t-- )16 {17 scanf( "%d",&n );18 for( i = 0 ; i<n ; i++ )19 {20 scanf( "%d",&arr[i] );21 }22 sort( arr , arr+n );23 while(1)24 {25 int mmin = inf;26 for( i = 0 ; i<n ; i++ )27 {28 printf( "%d%c",arr[i],(i==n-1)?‘\n‘:‘ ‘ );29 }30 for( i = n-1 ; i>=1 ; i-- )31 {32 if( arr[i]>arr[i-1] )33 {34 temp = arr[i-1];35 k = i-1;36 break;37 }38 }39 if( i<=0 )40 break;41 for( i = n-1 ; i>k ; i-- )42 {43 if( arr[i]>arr[k] && arr[i]<mmin )44 {45 mmin = arr[i];46 j = i;47 }48 }49 swap( arr[j] , arr[k] );50 for( i = k+1 , j = n-1 ; i<j ; i++ , j-- )51 {52 swap( arr[i] , arr[j] );53 }54 }55 printf( "\n" );56 }57 }58 return 0;59 }
today:
世间最美 不过 残缺美
所以 留点遗憾 是件很美的事
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。