社区讨论

玄学的WA,下了数据看看没错啊,求助

P1018[NOIP 2000 提高组] 乘积最大参与者 6已保存回复 19

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
19 条
当前快照
1 份
快照标识符
@mi6woopt
此快照首次捕获于
2025/11/20 12:03
4 个月前
此快照最后确认于
2025/11/20 15:07
4 个月前
查看原帖
玄学
我下了数据,不知道为什么错了,求助。
附代码:
CPP
#include<bits/stdc++.h>
using namespace std;
int n,K;
char m[41];
long long num[41][41];
long long dp[50][41][41];
void pre();
int main(){
// 	freopen("乘积最大.in","r",stdin);
    cin>>n>>K;
    int i,j,k,l;
    getchar();
    for(i=1;i<=n;i++){
        m[i]=getchar();
    }
    pre();
    for(i=1;i<=n;i++)
    for(j=i;j<=n;j++)
    dp[0][i][j]=num[i][j];
    for(k=1;k<=K;k++){
        for(i=1;i<=n;i++){
            for(j=i+1;j<=n;j++){
                dp[k][i][j]=-2147483647;
                for(l=i;l<j;l++){
                    dp[k][i][j]=max(dp[k][i][j],dp[k-1][i][l]*num[l+1][j]);
                }
            }
        }
    }
    printf("%lld\n",dp[K][1][n]);
    return 0;
}
void pre(){
    int i,j;
    for(i=1;i<=n;i++){
        num[i][i]=m[i]-'0';
        for(j=i+1;j<=n;j++){
            num[i][j]=num[i][j-1]*10+m[j]-'0';
        }
    }
}

回复

19 条回复,欢迎继续交流。

正在加载回复...