这个就是多重背包?
不过很简单,不是dp,用常规思维就能想出来
#include<cstdio>
using namespace std;
int main()
{
int a,b,t,i,j,min,ans;
while(scanf("%d %d %d",&a,&b,&t)!=EOF)
{
if(a>b)
{
i=a,a=b,b=i;
}
i=t/a;
j=0;
min=100000;
while(j<=i)
{
if(t-(i-j)*a-((t-(i-j)*a)/b)*b<min&&t-(i-j)*a-((t-(i-j)*a)/b)*b>=0)
{
min=t-((i-j)*a+((t-(i-j)*a)/b)*b);
ans=j;
}
j++;
}
printf("%d",i-ans+(t-(i-ans)*a)/b);
if(min)
printf(" %d",min);
printf("\n");
}
return 0;
}