• 字典序法实现全排列


    #include<iostream>

    using namespace std;

    #define M 9

    int tempData[9 * 8 * 7 * 6 * 5 * 4 * 3 * 2][M] = {0};

    void sort(int array[],int begin,int end);
    void view(int array[],int length);
    bool jud(int array[]);
    void getData(int array[]);
    int getPoint(int array[],int value);


    int main(int argc,char** argv){
     
     int data[M] = {1,2,3,4,5,6,7,8,9};
     getData(data);
     
     return 0;
    }

    void getData(int array[]){
     
     int i = 0,j = 0;
     int temp;
     int nums = 0;
     
     for(int i = 0;i < M;i++){
       
      tempData[nums][i] = array[i];
     }
     nums++;
     
     while(jud(array)){
      
      for(int m = M - 1;m > 0;m--){
       
       if(array[m] > array[m - 1]){
        
        i = m - 1;
        j = getPoint(array,array[i]);
        
        temp = array[i];
        array[i] = array[j];
        array[j] = temp;
        break;
       }
      }
      
      sort(array,i + 1,M - 1);
      for(int i = 0;i < M;i++){
       
       tempData[nums][i] = array[i];
      }
      nums++;
     }
    }

    void sort(int array[],int begin,int end){
     
     int temp = 0;
     
        for(int i = begin;i < end;i++){
         
         for(int j = i + 1;j <= end;j++){
          
          if(array[i] > array[j]){
           
           temp = array[i];
           array[i] = array[j];
           array[j] = temp;
       }
      }
     }

    }

    void view(int array[],int length){
     
     for(int i = 0;i < length;i++){
      
      cout << array[i] << "  ";
     }
     cout << endl;
    }

    bool jud(int array[]){
     
     for(int i = 0;i < M - 1;i++){
      
      if(array[i] < array[i + 1]){
       
       return true;
      }
     }
     
     return false;
    }

    int getPoint(int array[],int value){
     
     for(int i = M - 1;i >= 0;i--){
      
      if(array[i] > value){
       
       return i;
      }
     }
     
    }

  • 相关阅读:
    html之colspan && rowspan讲解
    html之cellspacing && cellpadding讲解
    JavaScript之setcookie()讲解
    Tomcat漏洞说明与安全加固
    ActionScript基本语法讲解
    2014年03月09日攻击百度贴吧的XSS蠕虫源码
    Samy XSS Worm之源码讲解
    新浪微博之XSS蠕虫脚本源码讲解
    JavaScript之match()方法讲解
    JavaScript之substring()方法讲解
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700712.html
Copyright © 2020-2023  润新知