PKU ACM 1050题为什么我的代码验证都对了,提交却显示runtime error。多谢帮助了 10
#include<iostream>usingnamespacestd;intaa(intm,intk)//计算m+(m-1)+(m-2)······+(m-k+1){i...
#include<iostream>
using namespace std;
int aa(int m,int k) //计算m+(m-1)+(m-2)······+(m-k+1)
{
int s=0;
for(int i=0;i<k;i++)
s+=(m-i);
return s;
}
int cc(int *i,int j) //计算一组数中的最大值
{
int max=-999;
for(int m=0;m<j;m++)
if(i[m]>max)max=i[m];
return max;
}
int bb(int *s,int x) //计算一维数组中的连续最大和
{
int max;
int h=aa(x,x);
int *y=new int[h];
for(int i=0;i<x;i++)
{
y[aa(x,i)]=s[i];
for(int j=i+1;j<x;j++)
y[aa(x,i)+j]=y[aa(x,i)+j-1]+s[j];
}
return max=cc(y,h);
delete []y;
}
int main()
{
int a[101][101];
int N;
cin>>N;
int g=aa(N,N);
int*p=new int[N*g];
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
cin>>a[i][j];
for(int i=0;i<N;i++) //记录第i排与第j排之间各列数字之和
{
for(int k=0;k<N;k++)
p[N*aa(N,i)+k]=a[i][k];
if(i==N-1)break;
for(int j=i+1;j<N;j++)
for(int k=0;k<N;k++)
{
p[N*aa(N,i)+(j-i)*N+k]=p[N*aa(N,i)+(j-i-1)*N+k]+a[j][k];
}
}
int *q=new int [g];
int *l=new int[N];
for(int m=0;m<g;m++)
{
for(int n=0;n<N;n++)
{
l[n]=p[m*N+n];
}
q[m]=bb(l,N);
}
cout<<cc(q,g)<<endl;
delete []p;
delete []q;
delete []l;
} 展开
using namespace std;
int aa(int m,int k) //计算m+(m-1)+(m-2)······+(m-k+1)
{
int s=0;
for(int i=0;i<k;i++)
s+=(m-i);
return s;
}
int cc(int *i,int j) //计算一组数中的最大值
{
int max=-999;
for(int m=0;m<j;m++)
if(i[m]>max)max=i[m];
return max;
}
int bb(int *s,int x) //计算一维数组中的连续最大和
{
int max;
int h=aa(x,x);
int *y=new int[h];
for(int i=0;i<x;i++)
{
y[aa(x,i)]=s[i];
for(int j=i+1;j<x;j++)
y[aa(x,i)+j]=y[aa(x,i)+j-1]+s[j];
}
return max=cc(y,h);
delete []y;
}
int main()
{
int a[101][101];
int N;
cin>>N;
int g=aa(N,N);
int*p=new int[N*g];
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
cin>>a[i][j];
for(int i=0;i<N;i++) //记录第i排与第j排之间各列数字之和
{
for(int k=0;k<N;k++)
p[N*aa(N,i)+k]=a[i][k];
if(i==N-1)break;
for(int j=i+1;j<N;j++)
for(int k=0;k<N;k++)
{
p[N*aa(N,i)+(j-i)*N+k]=p[N*aa(N,i)+(j-i-1)*N+k]+a[j][k];
}
}
int *q=new int [g];
int *l=new int[N];
for(int m=0;m<g;m++)
{
for(int n=0;n<N;n++)
{
l[n]=p[m*N+n];
}
q[m]=bb(l,N);
}
cout<<cc(q,g)<<endl;
delete []p;
delete []q;
delete []l;
} 展开
1个回答
展开全部
runtime error (运行时错误)就是程序运行到一半,程序就崩溃了。
比如说:
①除以零
②数组越界:int a[3]; a[10000000]=10;
③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;
④使用已经释放的空间:int * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;
⑤数组开得太大,超出了栈的范围,造成栈溢出:int a[100000000];
建议你测试一下边缘的值,测试一下极端值,看看有没有问题。
如果你用的是 Windows XP 操作系统,那么Runtime Error 的界面一般如下:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询