自己找不到错误的用例,想请大佬指教一下错了哪些特殊用例?
#include<stdio.h>
int max(int x,int y);
void find(int v0,int x);
int m,n;
int flag=0;
int dp[1050][1050]={ {0} };
int w[1050],v[1050];
int main()
{
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d,%d",&w[i],&v[i]);
scanf("%d",&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if (w[i]>j)
dp[i][j]=dp[i-1][j];
else
dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
}
int value=dp[n][m];
find(value,1);
}
void find(int v0,int x)
{
int i,j,vi;
for(i=x;i<=n;i++)
{
x++;
if(v0>=0&&v[i]!=0)
{
v0=v0-v[i];
vi=v[i];
v[i]=0;
if(v0==0)
{
flag++;
printf("case %d:\n",flag);
for(j=1;j<=n;j++)
if(v[j]==0)
printf("%d\n",j);
}
if(v0>=0)
find(v0,x);
v[i]=vi;
v0=v0+v[i];
}
}
}
int max(int x,int y)
{
if(x>y)
return x;
else
return y;
}