hdu 2602为什么WA?
http://acm.hdu.edu.cn/showproblem.php?pid=2602我的代码:#include"stdafx.h"#include"stdio.h...
http://acm.hdu.edu.cn/showproblem.php?pid=2602
我的代码:
#include "stdafx.h"
#include "stdio.h"
#define MAX 1001
int c[MAX];
int v[MAX];
int a[MAX][MAX];
void main()
{
int t, n, w, i, j;
scanf("%d", &t);
while( t-- )
{
scanf("%d%d", &n, &w);
for( i=1; i<=n; i++ )
scanf("%d", &v[i]);
for( i=1; i<=n; i++ )
scanf("%d", &c[i]);
for( j=0; j<=w; j++ )
a[0][j]=0;
for( i=1; i<=n; i++ )
{
a[i][0]=0;
for( j=1; j<=w; j++ )
if( c[i]<=j )
if( a[i-1][j-c[i]]+v[i] >a[i-1][j] )
a[i][j]=a[i-1][j-c[i]]+v[i];
else
a[i][j]=a[i-1][j];
else
a[i][j]=a[i-1][j];
}
printf("%d\n", a[n][w]);
}
} 展开
我的代码:
#include "stdafx.h"
#include "stdio.h"
#define MAX 1001
int c[MAX];
int v[MAX];
int a[MAX][MAX];
void main()
{
int t, n, w, i, j;
scanf("%d", &t);
while( t-- )
{
scanf("%d%d", &n, &w);
for( i=1; i<=n; i++ )
scanf("%d", &v[i]);
for( i=1; i<=n; i++ )
scanf("%d", &c[i]);
for( j=0; j<=w; j++ )
a[0][j]=0;
for( i=1; i<=n; i++ )
{
a[i][0]=0;
for( j=1; j<=w; j++ )
if( c[i]<=j )
if( a[i-1][j-c[i]]+v[i] >a[i-1][j] )
a[i][j]=a[i-1][j-c[i]]+v[i];
else
a[i][j]=a[i-1][j];
else
a[i][j]=a[i-1][j];
}
printf("%d\n", a[n][w]);
}
} 展开
1个回答
展开全部
我把我ac的代码发给你做参考吧,好好对比看一下,加油
#include <stdio.h>
#include<string.h>
int p[1001];
struct pp
{
int n;
int v;
}a[1001];
int MAX(int m,int n)
{
return m>n?m:n;
}
int main()
{
int t,m,v,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&v);
for(i=1;i<=m;i++)
{
scanf("%d",&a[i].n);
}
for(i=1;i<=m;i++)
{
scanf("%d",&a[i].v);
}
memset(p,0,sizeof(p));
for(i=1;i<=m;i++)
{
for(j=v;j>=0;j--)
if(j>=a[i].v)
p[j]=MAX(p[j],p[j-a[i].v]+a[i].n);
}
printf("%d\n",p[v]);
}
return 0;
#include <stdio.h>
#include<string.h>
int p[1001];
struct pp
{
int n;
int v;
}a[1001];
int MAX(int m,int n)
{
return m>n?m:n;
}
int main()
{
int t,m,v,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&v);
for(i=1;i<=m;i++)
{
scanf("%d",&a[i].n);
}
for(i=1;i<=m;i++)
{
scanf("%d",&a[i].v);
}
memset(p,0,sizeof(p));
for(i=1;i<=m;i++)
{
for(j=v;j>=0;j--)
if(j>=a[i].v)
p[j]=MAX(p[j],p[j-a[i].v]+a[i].n);
}
printf("%d\n",p[v]);
}
return 0;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询