有大佬看看吗。
#include <stdio.h>
#include <string.h>
const int N = 1e7 + 100;
int dp[N], a[15], b[15];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
memset(dp,0,sizeof(dp));
int n, s, d;
scanf("%d %d %d",&s,&n,&d);
for (int i = 1; i <= d; i++)
scanf("%d %d",&a[i],&b[i]);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= d; j++)
{
for (int k = a[j]; k <= s; k+=1000)
{
dp[k] = max(dp[k], dp[k - a[j]] + b[j]);
}
}
s += dp[s/1000*1000];
}
printf("%d",s);
return 0;
}