#include<stdio.h>
#include<string.h>
int main()
{ double a,b;
double f[100];
int i,j,c,l;
int flag=0;
int n,k;
double x;
double ans=0;
scanf("%d %d %lf",&n,&k,&x); 、
int X;X=x*10;
int v[101][2];int p[101][2];
memset(p,0,sizeof(p));memset(v,0,sizeof(p));memset(f,0,sizeof(p));
for(i=1;i<=n;i++) {scanf("%lf",&a);v[i][0]=a*10;}
for(i=1;i<=n;i++){scanf("%lf",&b);p[i][0]=b;}
for(i=1;i<=n;i++){scanf("%d",&c);v[i][1]=c;p[i][1]=c;}
for(i=0;i<k;i++){flag=0;scanf("%d",&c);for(j=1;j<=n;j++){if(flag==0){ if(v[j][1]==c) {ans+=p[j][0]; flag++; X-=v[j][0]; v[j][0]=-1; p[j][0]=-1;} } else {if(v[j][1]==c){ v[j][0]=-1; p[j][0]=-1;} }}}
for(i=1;i<=n;i++)
{if(p[i][0]!=-1){ for(j=X;j>=0;j--)
{if(f[j-v[i][0]]+p[i][0]>f[j]&&j-v[i][0]>=0)
{ f[j]=f[j-v[i][0]]+p[i][0]; for(l=1;l<=n;l++) { if(v[l][1]==v[j][1]) { p[l][0]=-1; } }} }} }
printf("%lf",f[X]+ans);
return 0;}
以上是代码……感觉没有越界什么的啊……
http://www.wikioi.com/problem/1025/此处原题
感觉蒟蒻智商拙计,求大牛来揪出问题……
#include<string.h>
int main()
{ double a,b;
double f[100];
int i,j,c,l;
int flag=0;
int n,k;
double x;
double ans=0;
scanf("%d %d %lf",&n,&k,&x); 、
int X;X=x*10;
int v[101][2];int p[101][2];
memset(p,0,sizeof(p));memset(v,0,sizeof(p));memset(f,0,sizeof(p));
for(i=1;i<=n;i++) {scanf("%lf",&a);v[i][0]=a*10;}
for(i=1;i<=n;i++){scanf("%lf",&b);p[i][0]=b;}
for(i=1;i<=n;i++){scanf("%d",&c);v[i][1]=c;p[i][1]=c;}
for(i=0;i<k;i++){flag=0;scanf("%d",&c);for(j=1;j<=n;j++){if(flag==0){ if(v[j][1]==c) {ans+=p[j][0]; flag++; X-=v[j][0]; v[j][0]=-1; p[j][0]=-1;} } else {if(v[j][1]==c){ v[j][0]=-1; p[j][0]=-1;} }}}
for(i=1;i<=n;i++)
{if(p[i][0]!=-1){ for(j=X;j>=0;j--)
{if(f[j-v[i][0]]+p[i][0]>f[j]&&j-v[i][0]>=0)
{ f[j]=f[j-v[i][0]]+p[i][0]; for(l=1;l<=n;l++) { if(v[l][1]==v[j][1]) { p[l][0]=-1; } }} }} }
printf("%lf",f[X]+ans);
return 0;}
以上是代码……感觉没有越界什么的啊……
http://www.wikioi.com/problem/1025/此处原题
感觉蒟蒻智商拙计,求大牛来揪出问题……