题意:背包大小有t,有两个物品,m,n问你在尽量使背包装爱满的情况下,可以放多少个物品。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int imax(int a,int b){return a>b?a:b;}
int dp[10005];
int main()
{
int n,m,t;
while(scanf("%d%d%d",&n,&m,&t)!=EOF)
{
int ans=0,i;
memset(dp,-1,sizeof(dp));
dp[0]=0;
for(i=0;i<t;i++)
{
if(dp[i]!=-1)
{
dp[i+n]=imax(dp[i]+1,dp[i+n]);
}
}
for(i=0;i<t;i++)
{
if(dp[i]!=-1)
{
dp[i+m]=imax(dp[i]+1,dp[i+m]);
}
}
for(i=t;i>=0;i--)
{
if(dp[i]!=-1){ans=i;break;}
}
//for(i=0;i<t;i++) printf("%d ",dp[i]); puts("");
printf("%d",dp[ans]);
if(ans!=t) printf(" %d",t-ans);
puts("");
}
return 0;
}