• 洛谷1018乘积最大


    题目:https://www.luogu.org/problemnew/show/P1018

    水dp+高精乘高精。

    倒序存入的小优化。主要使赋初值简单了点。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,k,a[45],c[45],r[45],f[45][8][45],ans[45];
    char tmp[45];
    void print(int a[])
    {
        for(int i=a[0];i;i--)
            printf("%d",a[i]);
    }
    void mul(int u[],int x,int y)
    {
        memset(r,0,sizeof r);
        r[0]=y-x+1;
        for(int i=x;i<=y;i++)r[i-x+1]=a[i];//底下倒序所以这里顺序 
        for(int i=1;i<=u[0];i++)
            for(int j=1;j<=r[0];j++)
                c[i+j-1]+=u[i]*r[j];
        c[0]=u[0]+r[0]-1;
        for(int i=1;i<=c[0];i++)
        {
            c[i+1]+=c[i]/10;
            c[i]%=10;
        }
        if(c[c[0]+1])c[0]++;
    }
    bool comp(int a[],int b[])
    {
        if(a[0]<b[0])return 1;
        if(a[0]>b[0])return 0;
        for(int i=a[0];i;i--)
        {
            if(a[i]<b[i])return 1;
            if(a[i]>b[i])return 0;
        }
        return 0;
    }
    int main()
    {
        scanf("%d%d",&n,&k);
        cin>>tmp;
        for(int i=1;i<=n;i++)
        {
            a[i]=tmp[n-i]-48;//倒序了 
            memcpy(f[i][0],f[i-1][0],sizeof f[i-1][0]);
            f[i][0][i]=a[i];
            f[i][0][0]=i;
        }
        for(int i=2;i<=n;i++)
            for(int j=1;j<i&&j<=k;j++)
                for(int l=j;l<i;l++)//放在第l个元素后面
                {
                    memset(c,0,sizeof c);
    //                printf("mul l=%d j-1=%d l+1=%d i=%d ",l,j-1,l+1,i);
                    mul(f[l][j-1],l+1,i);
                    if(comp(f[i][j],c))memcpy(f[i][j],c,sizeof c);
    //                printf("i=%d j=%d l=%d ",i,j,l);
    //                print(f[i][j]);printf("
    ");
                }
        print(f[n][k]);
        return 0;
    }
  • 相关阅读:
    java面试题总汇
    数据库sql语句规则
    docker安装redis(网上很多答案都是错误的,小心误入歧途!)
    docker 安装redis后,可视化工具无法连接
    Session
    #{}和${}区别
    axios和ajax区别
    Git使用
    Git常用命令
    如何简单粗暴的搞定dubbo调用模块
  • 原文地址:https://www.cnblogs.com/Narh/p/8533331.html
Copyright © 2020-2023  润新知