0
已解决
赵毅恒
资深守护
资深守护
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
long long num[200][200],f[200][200];
int main()
{
int n,k;
string str;
cin>>n>>k>>str;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
num[i][j]=num[i][j-1]*10+str[j-1]-'0';
}
}
for(int i=1;i<=n;++i)
{
f[i][0]=num[1][i];
}
for(int i=1;i<=n;++i)
{
for(int j=1;j<=k;++j)
{
for(int m=1;m<i;++m)
{
f[i][j]=max(f[i][j],f[m][j-1]*num[m+1][i]);
}
}
}
cout<<f[n][k];
return 0;
}
求大佬帮忙找错
0
已采纳
王子凡
高级光能
高级光能
@赵毅恒,str是字符数组,str[50],第13行是j=i开始
15行是+str[j],cin>>str+1;
24行j要<=min(k,i-1)
其它应该是对的
这是我的程序:
for (int i=1;i<=n;i++)
{
for (int j=i;j<=n;j++)
{
num[i][j]=num[i][j-1]*10+s[j]-'0';
}
}
for (int i=1;i<=n;i++)
f[i][0]=num[1][i];
for (int i=1;i<=n;i++)
{
for (int j=1;j<=min(K,i-1);j++)
{
for (int k=1;k<i;k++)
{
f[i][j]=max(f[k][j-1]*num[k+1][i],f[i][j]);
}
}
}
还有二维数组50就够了
王子凡在2018-03-02 19:51:18追加了内容
???不对?
那我把全程序发给你
你在对对看?
int n,K;
cin>>n>>K;
cin>>s+1;
for (int i=1;i<=n;i++)
{
for (int j=i;j<=n;j++)
{
num[i][j]=num[i][j-1]*10+s[j]-'0';
}
}
for (int i=1;i<=n;i++)
f[i][0]=num[1][i];
for (int i=1;i<=n;i++)
{
for (int j=1;j<=min(K,i-1);j++)
{
for (int k=1;k<i;k++)
{
f[i][j]=max(f[k][j-1]*num[k+1][i],f[i][j]);
}
}
}
cout<<f[n][K];
return 0;
定义:
int num[50][50],f[50][10];//全局变量
char s[50];//全局变量
0
0