UVA——10465(dp)

来源:互联网 发布:mac cs1.6 编辑:程序博客网 时间:2024/06/05 07:15

题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=16&page=show_problem&problem=1406

注:和换硬币的形式差不多。 

#include <iostream>#include <cstring>#include <algorithm>using namespace std;#define N 11111  int dp[N];  int main(){      int a[2],t;     int i,j;      while(cin>>a[0]>>a[1]>>t)    {          memset(dp,-1,sizeof(dp));                  dp[0]=0;                          for(i=0;i<2;i++)              for(j=a[i];j<=t;j++)   if(dp[j-a[i]]>-1)  //保证j-a[i]的钱可以兑换硬币。                 dp[j]=max(dp[j-a[i]]+1,dp[j]);              for(i=t;i>=0;i--)     if(dp[i]>=0) break;          cout<<dp[i];          if(i<t) cout<<" "<<t-i;          cout<<endl;    }      return 0;  } 


原创粉丝点击