HDU1284钱币兑换问题

来源:互联网 发布:淘宝的的vx是什么意思 编辑:程序博客网 时间:2024/04/30 09:36

题目——传送


#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int dp[32768];int main(){    int i,j,n;    int val[3]= {1,2,3};    memset(dp,0,sizeof(dp));    dp[0] = 1;    for(i=0; i<3; i++)    {        for(j=val[i]; j<=32768; j++)        {            dp[j] = dp[j]+dp[j-val[i]];        }    }    while(~scanf("%d",&n))    {        printf("%d\n",dp[n]);    }    return 0;}


数学方法也过

#include<stdio.h>int main(){long i,n,sum,f;while(scanf("%ld",&n)>0){sum=0;sum+=n/3;      //计算n换成3、1的有多少种sum++;       //n全部换成1的for(i=0;i<=n/3;i++){f=(n-i*3)/2;      //n换成2的有多少种,先是换出一个3,再是将剩下的2换成1,相加,得到结果,也不必担心重复计算的问题sum+=f;}printf("%ld\n",sum);}return 0;}




0 0
原创粉丝点击