问题标题: 酷町堂:酷町堂1522错了

0
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
我要回答