zoukankan      html  css  js  c++  java
  • UVa 147 Dollars(硬币转换)

    题目大意:给出五种硬币,价值分别为 1,5,10,25,50,。当给出一个价值时,求出能够组合的种数(每种硬币可以用无限次)。

    思路:完全背包, dp[i][j]表示总数 i 能够被表示的种数。状态转移方程为 dp[i][j] = dp[i-k*v[j]][j-1] (k = 0,1,2,3...)。

    C++ 代码如下:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    using namespace std;
    
    int v[6] = {0,1,5,10,25,50};
    
    int main(){
    	int i,j,k,t,n,dp[7490][6];
    	memset(dp,0,sizeof(dp));
    	for(i=0; i<6; i++)
    	    dp[0][i] = 1;
    	for(i=1; i<7490; i++){
     		for(j=1; j<6; j++){
    			k = 0;
    			t = i - k*v[j];
    			while(t >= 0){
    				dp[i][j] += dp[t][j-1]; 
    				k ++;
    				t = i - k*v[j];
    			}
    		}
    	}
    	while(scanf("%d",&n) != EOF){
    		cout << dp[n][5] << endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    canvas之碎碎念
    canvas之动态时钟
    属性小问题
    readonly and disabled
    table
    地图热区
    子块元素在父块元素中居中
    Ajax与JS
    前端测试
    html5/css3
  • 原文地址:https://www.cnblogs.com/jxgapyw/p/5063804.html
Copyright © 2011-2022 走看看