• 整数划分问题


    // 整数s划分展示

    #include <stdio.h>

    void main()

    { int s,i,j,k,t,u; 

      static int a[21][800][21];

      printf("  input s(s<=20):"); scanf("%d",&s);

      a[2][1][1]=1;a[2][1][2]=1;a[2][2][1]=2;

      u=2;

      for(k=3;k<=s;k++)

        { for(j=1;j<=u;j++)

           { a[k][j][1]=1;           

             for(t=2;t<=k;t++)         // 实施在k-1所有划分式前加1操作  

                a[k][j][t]=a[k-1][j][t-1];    

           }

         for(i=u,j=1;j<=u;j++)

           if(a[k-1][j][1]<a[k-1][j][2])   // 若k-1划分式第1项小于第2项  

             { i++;               // 第1项加1为k的第i个划分式的第1项  

               a[k][i][1]=a[k-1][j][1]+1;     

               for(t=2;t<=k-1;t++)

                 a[k][i][t]=a[k-1][j][t];

              }

         i++;a[k][i][1]=k;              // k的最后一个划分式为:k=k  

         u=i;

        }

      for(j=1;j<=u;j++)                // 输出s的所有划分式  

        { printf("%3d: %d=%d",j,s,a[s][j][1]);

          i=2;

          while(a[s][j][i]>0)

            {printf("+%d",a[s][j][i]);i++;}

          printf(" ");

         }

     }

     

    // 整数s划分优化递推设计

    #include <stdio.h>

    void main()

    { int s,i,j,k,t,u; 

      static int a[1600][25];

      printf("input s(s<=24):"); 

      scanf("%d",&s);

      a[1][1]=1;a[1][2]=1;a[2][1]=2;u=2;

      for(k=3;k<=s;k++)

        { for(j=1;j<=u;j++)

            { i=k-1;           

              for(t=i;t>=1;t--)        // 实施在k-1所有划分式前加1操作  

                 a[j][t+1]=a[j][t];

              a[j][1]=1;

            }

          for(t=u,j=1;j<=u;j++)

            if(a[j][2]<a[j][3])          // 若k-1划分式第1项小于第2项  

              { t++;

                a[t][1]=a[j][2]+1;    // 第1项加1  

                i=3;

                while(a[j][i]>0)

                   {a[t][i-1]=a[j][i];i++;}

              }

          t++;a[t][1]=k;                // 最后一个划分式为:k=k  

          u=t;

         }

      for(j=1;j<=u;j++)                // 输出所有u个划分式  

        { printf("%3d: %d=%d",j,s,a[j][1]);

          i=2;

          while(a[j][i]>0)

             {printf("+%d",a[j][i]);i++;}

          printf(" ");

       }

    }

  • 相关阅读:
    ABBYY Cup 3.0G3. Good Substrings
    Codeforces Beta Round #94 (Div. 1 Only)B. String sam
    hdu5421Victor and String 两端加点的pam
    loj#2059. 「TJOI / HEOI2016」字符串 sam+线段树合并+倍增
    Codeforces Round #349 (Div. 1)E. Forensic Examination
    ACM-ICPC World Finals 2019 G.First of Her Name
    51nod1647 小Z的trie
    LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci 题解
    POJ 2443 Set Operation 题解
    CSP-J 2019游记
  • 原文地址:https://www.cnblogs.com/liao-pxsoftware15/p/7858362.html
Copyright © 2020-2023  润新知