• nyoj746 整数划分(四)


    整数划分(四)

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
    描述

           暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷。。亲爱的你能帮帮他吗?

          问题是我们经常见到的整数划分,给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积

    输入
    第一行是一个整数T,表示有T组测试数据
    接下来T行,每行有两个正整数 n,m ( 1<= n < 10^19, 0 < m <= n的位数);
    输出
    输出每组测试样例结果为一个整数占一行
    样例输入
    2
    111 2
    1111 2
    样例输出
    11
    121
    AC代码:
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<string>
     6 using namespace std;
     7 long long dp[20][20],sum,mmax;
     8 int n,pp[20];
     9 void dfs(int m,int cot,int p)//深度遍历,去掉注释,更容易看出来;
    10 {
    11     if(cot == m)
    12     {
    13         sum=1;
    14         for(int i=0; i<=cot;i++)
    15         {
    16           // cout<<pp[i]<<" "<<pp[i+1]<<endl;
    17            sum*=dp[pp[i]][pp[i+1]];
    18         }
    19     if(sum>mmax)
    20         mmax=sum;
    21     }
    22     else for(int i=p ; i<n ;i++)
    23     {
    24         // cout<<i<<endl;
    25           pp[cot+1]=i;
    26           dfs(m,cot+1,i+1);
    27     }
    28 }
    29 int main()
    30 {
    31     int i,j,k,t,m,nn[25];
    32     char s[25];
    33     cin>>t;
    34     while(t--)
    35     {
    36         memset(dp, 0, sizeof(dp));
    37         mmax=0;
    38         cin>>s>>m ;
    39         int len=strlen(s);
    40         for(i=0; i<len; i++)//先转化为单个的整型
    41             nn[i]=s[i]-'0';
    42         pp[m]=len;n=len;
    43         for(i=0 ; i<=len ; i++)
    44             for(j=i+1 ; j<=len ; j++)
    45                for(k=i; k<j ; k++)
    46                  dp[i][j]=dp[i][j]*10+nn[k];//截取从i到j的一段,转化为long long
    47         dfs(m-1,0,1);
    48         cout<<mmax<<endl;
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    Android推送服务——百度云推送
    关于HierarchyViewer的使用
    Android开发者的演示工具——asm.jar
    重装huson遇到的一些错误及解决
    对比语法错误、语义错误以及运行时错误
    对比常量存储与堆栈
    php下载文件夹目录下的文件
    B/S(WEB)系统中使用Activex插件调用扫描仪实现连续扫描并上传图像(IE文件扫描并自动上传
    上传文件夹
    如何在Web页面里使用高拍仪扫描上传图像
  • 原文地址:https://www.cnblogs.com/lovychen/p/3651510.html
Copyright © 2020-2023  润新知