关于杭电acm1003的输出结果
#include<iostream>usingnamespacestd;voidMax(intt,intk,intnum,inta[],int*f)//动态规划{f=ne...
#include <iostream>
using namespace std;
void Max(int t,int k,int num,int a[],int*f)//动态规划
{
f=new int[num+1];
int max=-1000;
int flag1=1,flag2=0;
f[0]=a[0];
for(int i=1;i<num;++i)
{
if(f[i-1]>=0)
{
f[i]=f[i-1]+a[i];
}
else
{
f[i]=a[i];
flag1=i+1;
}
if(f[i]>max)
{
max=f[i];
flag2=i+1;
}
}
f=NULL;
cout<<"Case "<<k+1<<':'<<endl;
cout<<max<<' '<<flag1<<' '<<flag2<<endl;
if(k<t-1)
cout<<endl;
}
int main()
{
int *f=NULL;
int *a=NULL;
int t=0;
int num=0;
cin>>t;
for(int i=0;i<t;++i)
{
cin>>num;
a=new int[num+1];
for(int j=0;j<num;++j)
cin>>a[j];
a[num]='\0';
Max(t,i,num,a,f);
a=NULL;
}
return 0;
}
这是我写的代码,要求输出的是输入数组的最小子序列和,和别人写的C++程序对照了,运行结果一模一样,空格或者空行都有注意,可是别人的代码通过,我的是wrong answer,所以请教一下 展开
using namespace std;
void Max(int t,int k,int num,int a[],int*f)//动态规划
{
f=new int[num+1];
int max=-1000;
int flag1=1,flag2=0;
f[0]=a[0];
for(int i=1;i<num;++i)
{
if(f[i-1]>=0)
{
f[i]=f[i-1]+a[i];
}
else
{
f[i]=a[i];
flag1=i+1;
}
if(f[i]>max)
{
max=f[i];
flag2=i+1;
}
}
f=NULL;
cout<<"Case "<<k+1<<':'<<endl;
cout<<max<<' '<<flag1<<' '<<flag2<<endl;
if(k<t-1)
cout<<endl;
}
int main()
{
int *f=NULL;
int *a=NULL;
int t=0;
int num=0;
cin>>t;
for(int i=0;i<t;++i)
{
cin>>num;
a=new int[num+1];
for(int j=0;j<num;++j)
cin>>a[j];
a[num]='\0';
Max(t,i,num,a,f);
a=NULL;
}
return 0;
}
这是我写的代码,要求输出的是输入数组的最小子序列和,和别人写的C++程序对照了,运行结果一模一样,空格或者空行都有注意,可是别人的代码通过,我的是wrong answer,所以请教一下 展开
展开全部
当输入是
1 1
你的程序输出
-1000 1 0
你应该能查出问题。
1 1
你的程序输出
-1000 1 0
你应该能查出问题。
更多追问追答
追问
谢谢,这是个问题,我把那里改成了int max=a[0];输出是1 1 1,可是还是不能ac,所以还得麻烦下
追答
如下修改ac:
#include
using namespace std;
void Max(int t,int k,int num,int a[],int*f)//动态规划
{
f=new int[num+1];
int max=a[0];//max=-1000;
int flag1=1,flag2=1,x=1;//int flag1=1,flag2=0;
f[0]=a[0];
for(int i=1;i=a[i])//if(f[i-1]>=0)
{
f[i]=f[i-1]+a[i];
}
else
{
f[i]=a[i];
x=i+1;//加
}
if(f[i]>max)
{
max=f[i];
flag1=x;//加
flag2=i+1;
}
}
delete []f;//f=NULL;这样要内存泄漏,虽然可能不影响ac
cout>t;
for(int i=0;i>num;
a=new int[num+1];
for(int j=0;j>a[j];
a[num]='\0';
Max(t,i,num,a,f);
delete []a;//a=NULL;这样要内存泄漏,虽然可能不影响ac
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询