• 7.5 字典序全排列


    1.       #include<stdio.h>    
    2. void swap(int *p,int *q)    ///传入的是地址
    3. {    
    4.     int m;    
    5.     m = *p;    
    6.     *p = *q;    
    7.     *q = m;    
    8. }    
    9.     
    10. void sort(int s[], int x)    ///传入数组地址
    11. {    
    12.     int i,j,flag=1;    
    13.     int t;    
    14.     for(i=0; i<x-1 && flag ==1; i++)    
    15.     {    
    16.         flag=0;    
    17.         for(j=0; j<x-i-1; j++)    
    18.         {    
    19.             if(s[j] > s[j+1])    
    20.             {    
    21.                 t = s[j];    
    22.                 s[j] = s[j+1];    
    23.                 s[j+1] = t;    
    24.                 flag = 1;    
    25.             }    
    26.         }    
    27.     }    
    28.     
    29. }    
    30.     
    31. int main()    
    32. {    
    33.     int i,j,n,s[10];    
    34.     scanf("%d",&n);    
    35.     for(i=0;i<n;i++)  
    36.     {  
    37.         s[i]=i+1;  
    38.     }  
    39.     while(1)    
    40.     {    
    41.            for(i=0;i<n;i++)  
    42.     {  
    43.         printf("%d ",s[i]);  
    44.     }  
    45.     printf(" ");  
    46.         for(i=n-2;i>=0 && s[i]>=s[i+1]; i--)     
    47.         {                                    
    48.         }    
    49.         if(i<0)    
    50.             break;    
    51.         for(j=n-1;i<j && s[j]<=s[i];j--)    
    52.         {    
    53.         }    
    54.             
    55.         swap(&s[i], &s[j]);   
    56.         i++;        
    57.         j=n-1;     
    58.         while(i<j)    
    59.         {    
    60.             swap(&s[i++], &s[j--]);    
    61.         }    
    62.             
    63.     }    
    64.     return 0;    
    65. }    

    找规律:   比如如何确定 31976 的 下一位是 36179

                  先从后往前找 找到第一个减小的位置 如9到1   记1的位置为 i

                     从i开始往后找找到第一个增大的位置 记为j  如果没有则j为最后一位

                 交换 i 和 j 位置的数 为36971

               之后 再将i后面的数逆序  为36179

  • 相关阅读:
    Ajax返回DataSet时
    spring(8)
    spring(12)
    spring(6)
    spring(11)
    spring(10)
    spring(5)
    spring(3)
    spring(9)
    spring(7)
  • 原文地址:https://www.cnblogs.com/wshyj/p/6101086.html
Copyright © 2020-2023  润新知