求大佬们看看我代码是哪的问题?
#include<stdio.h>
#include<string.h>
using namespace std;
int max(int a,int b){
return a>b?a:b;
}
int main(){
int dp[30001],w[25],c[25],m,n,i,j;
memset(dp,1,sizeof(dp));
scanf("%d%d",&n,&m);
for(i=0;i<m;i++) scanf("%d%d",w+i,c+i);
for(i=0;i<m;i++)
for(j=n;j>=w[i];j--)
dp[j]=max(dp[j],dp[j-w[i]]*w[i]*c[i]);
printf("%d",dp[n]);
return 0;
}