hdu 1203为什么会Runtime Error(ACCESS_VIOLATION)呢?

以下为代码:急求解答!非常感谢!

#include<stdio.h>
#define N 10010
int w[1010];
double a[1010][N],v[1010];
int main()
{
int n,m,i,j;
double p,t;
while(scanf("%d%d",&n,&m),n!=0||m!=0)
{
for(i=1;i<=m;i++)
scanf("%d%lf",&w[i],&v[i]);
for(i=0;i<=m;i++) a[i][0]=1;
for(j=0;j<=n;j++) a[0][j]=1;
for(i=1;i<m;i++)
{
if(w[i]<=n)
{
for(j=1;j<w[i];j++)
a[i][j]=a[i-1][j];
for(j=w[i];j<=n;j++)
{
t=(1-v[i])*a[i-1][j-w[i]];
if(t<a[i-1][j])
a[i][j]=t;
else
a[i][j]=a[i-1][j];
}
}
else
for(j=1;j<=n;j++)
a[i][j]=a[i-1][j];
}
t=(1-v[m])*a[m-1][n-w[m]];
if(t<a[m-1][n])
a[m][n]=t;
else
a[m][n]=a[m-1][n];
p=(1-a[m][n])*100;
printf("%.1f%%\n",p);
}
return 0;
}
我要的是RE原因!希望知道的说一下,谢啦!

你的代码爆空间了
这题就是一个01背包

#include<cstdio>

int n,V,v[1005];
double w[1005];
int main()
{
int i,j,k;
while(scanf("%d%d",&V,&n),n+V)
{
double d[10005]={0};
for(i=0;i<n;i++)
scanf("%d%lf",v+i,w+i);
for(i=0;i<n;i++)
for(j=V;j>=v[i];j--)
{
double s=w[i]-w[i]*d[j-v[i]];
if(d[j-v[i]]+s>d[j])
d[j]=d[j-v[i]]+s;
}
printf("%.1f%%\n",d[V]*100);
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

hdu 1203为什么会Runtime Error(ACCESS_VIOLATION)呢?
你的代码爆空间了 这题就是一个01背包 include<cstdio> int n,V,v[1005];double w[1005];int main(){ int i,j,k;while(scanf("%d%d",&V,&n),n+V){ double d[10005]={0};for(i=0;i<n;i++)scanf("%d%lf",v+i,w+i);for(i=0;i<n;i++)for(j=V;j>=v[i];j--...

简单题hdu 1004 Runtime Error(ACCESS_VIOLATION)
STACK_OVERFLOW是栈空间溢出,什么是栈请自行google,你这里表现为a开得太大了,将大数组开到外面就可以解决。ACCESS_VIOLATION一般是数组越界了,你这里表现为b开的太小,当n>100时,i、j下标就会越界 include<stdio.h> include<string.h> char a[1001][20]; \/\/500改小就成WA,改大就STACK_...

...B Problem II Runtime Error(ACCESS_VIOLATION) 求解答..
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...

杭电OJ1004题,结果Runtime Error(ACCESS_VIOLATION),请大牛为我查错
题目说每种颜色最多15个字符,而你的程序中char name[15];显然你忽略了字符串最后一个结束符0,起码应该改为char name[16];另外还有一个问题, 你忘记初始化q了,你仅仅只是给q赋了一个全局的初值0,每个case开始的时候都应该初始化。 在while(N){的第一句写q=0;这样就可以了 ...

杭电acm 一直显示Runtime Error (ACCESS_VIOLATION) http:\/\/acm.hdu...
数组开小了。。你的代码这样改就AC了。。include<stdio.h> include<string.h> int main(){ int n;char zifu[1000];int i;scanf("%d",&n);getchar();for(i=0;i<n;i++){ int j,count=0;gets(zifu);for(j=0;j<strlen(zifu);j++){ if(zifu[j]<0)count++;} printf("%d\\n"...

HDU1253胜利大逃亡,Runtime Error(ACCESS_VIOLATION),求找错
for (int i=1;i<=6;i++)if (maze[xx[n]+gox[i]][yy[n]+goy[i]][zz[n]+goz[i]] &&visit[xx[n]+gox[i]][yy[n]+goy[i]][zz[n]+goz[i]]==0){num++;xx[num]=xx[n]+gox[i];yy[num]=yy[n]+goy[i];zz[num]=zz[n]+goz[i]...

HDU1171 出现Runtime Error (ACCESS_VIOLATION) 具体看问题补充
while(~scanf("%d",&n),n!=-1) 整个输入结束时,n是0,而不是-1:while(n--)此循环结束后n的值是0

杭电1004结果一直是Runtime Error(ACCESS_VIOLATION)
using namespace std;int main(){ string s, color[1000]; \/\/ 1000 int t, i, j, k, max, mid, num[1000]; \/\/ 1000 while(cin>>t && t != 0){ k = 0;for(i = 0; i < t; i++){ cin>>s;for(j = 0; j < k; j++){ if(s.compare(color[j]) == 0)num[...

...为什么一直是Runtime Error(ACCESS_Violation)
int besttime;int direction[4][2]={ {1,0},{0,1},{-1,0},{0,-1} };int visit[size][size];bool check(int x,int y){ if( x>=0 && y>=0 && x<n &&y<m && grid[x][y]!='#' && visit[x][y]==0){ return true;} return false;} void bfs(){ int i;int ...

hdu 1251 释放字典树时Runtime Error(ACCESS_VIOLATION),求指点!!!
\/\/释放内存 void Freedom(Node* p){ int i;for(i=0;i<26;i++){ if(p->Next[i]!=NULL)Freedom(p->Next[i]);} delete p;}

相似回答
大家正在搜