zoukankan      html  css  js  c++  java
  • 组合数学字典序C++实现

    1:算法思路

        ①对数字串从后向前找第一个降序,记录位置Ai

        ②再次从后向前找第一个比Ai大的数,与Ai位置的数交换

        ③将Ai位置以后的数字串逆序

    2:实例

        ①求839674521的字典后序

        ②从后向前扫描到第一个降序为4

        ③再次从后扫描找到第一个比4大的数5

        ④将4和5交换,并且最后三位逆序,得到839675124

    3:代码实现,只具备基本功能

     1 #include <IOSTREAM>
     2 using namespace std;
     3 int main()
     4 {
     5     int MaxSize= 0;  //数组大小,初始化为0
     6     cout<<"请输入数字串的位数:"<<endl;
     7     cin>>MaxSize;    //改变n的大小
     8     int* Array= new int[MaxSize];  //创建大小为n的数组
     9     cout<<"请输入"<<MaxSize<<"位数字串:"<<endl;
    10     int Ai=0;//第一个位置
    11 ////////////////////////////////////
    12 //数组初始化
    13 ////////////////////////////////////
    14     for (int i=0;i<MaxSize;i++)
    15     {
    16           cin>>Array[i];
    17     }    
    18 /////////////////////////////////////////////////////////////
    19 ///*字典序算法
    20     for (int p=MaxSize-2;p>=0;p--)
    21     {
    22         if (Array[p]<Array[p+1])
    23         {
    24             Ai=p;
    25             for (int k=MaxSize-1;k>p;k--)
    26             {
    27                 if (Array[p]<Array[k])
    28                 {    
    29                     int temp;
    30                     temp=Array[p];
    31                     Array[p]=Array[k];
    32                     Array[k]=temp;    
    33                     break;
    34                 }            
    35             }
    36         break;
    37         }    
    38     }
    39     //*/
    40 //////////////////////////////////////////////
    41 /////数组输出
    42 /////////////////////////////////////////////
    43     for (int m=0;m<=Ai;m++)
    44     {
    45         cout<<Array[m];
    46     }
    47     for (int k=MaxSize-1;k>Ai;k--)
    48     {
    49         cout<<Array[k];
    50     }
    51     cout<<endl;
    52     return 0;
    53 }

     

    4:运行演示

     

    5:心得

     

    通过这个简单的程序题,意识到了自己对编程的不足和迷茫,感谢33zeng无私的调试程序。加油!!!!

     

     

      

  • 相关阅读:
    POJ 1981 Circle and Points (扫描线)
    UVA 1514 Piece it together (二分图匹配)
    CodeForces 140D New Year Contest
    HDU 4863 Centroid of a Tree
    HDU 4865 Peter's Hobby
    HDU 4870 Rating
    HDU 4864 Task
    CodeForces 766E Mahmoud and a xor trip
    CodeForces 766D Mahmoud and a Dictionary
    CodeForces 767D Cartons of milk
  • 原文地址:https://www.cnblogs.com/f59130/p/3307475.html
Copyright © 2011-2022 走看看