代码: 这题需要高精度,只能通过20分 登录后复制 #include<iostream> #include<string> using namespace std; int dp[41][6]; int a[41]; int to_int(int i,int j){ int res=0; for(int k=i;k<=j;k++){ res=res*10+a[k]; } return res; } int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ scanf("%1d",&a[i]);//每次只取一个数 } for(int i=1;i<=n;i++){ dp[i][0]=to_int(1,i); } for(int i=1;i<=n;i++){ for(int k=1;k<=m;k++){ for(int j=1;j<i;j++){ if(i<=k)dp[i][k]=0; else dp[i][k]=max(dp[i][k],dp[j][k-1]*to_int(j+1,i)); } } } cout<<dp[n][m]; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35. 原创作者: u_16969274 转载于: https://blog.51cto.com/u_16969274/11813511