小P的故事——神奇的换零钱&&人活着系列之平方数

http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2777&cid=1219

这题不会,看了别人的代码

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

http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2934

这题就是换零钱的变形

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main()
{
    int T,n,dp[501];
    int w[21]= {0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400};
    memset(dp,0,sizeof(dp));
    dp[0]=1;
    for(int i=1; i<=20; i++)
    {
        for(int j=w[i]; j<=500; j++)
        {
            dp[j]=dp[j]+dp[j-w[i]];
        }
    }
    while(scanf("%d",&n)!=EOF)
    {
        printf("%d\n",dp[n]);
    }
    return 0;
}

小P的故事——神奇的换零钱&&人活着系列之平方数

时间: 2024-10-19 16:09:50

小P的故事——神奇的换零钱&&人活着系列之平方数的相关文章

小P的故事——神奇的换零钱

题目描述 已知A国经济很落后,他们只有1.2.3元三种面值的硬币,有一天小P要去A国旅行,想换一些零钱,小P很想知道将钱N兑换成硬币有很多种兑法,但是可惜的是他的数学竟然是体育老师教的,所以他不会啊...他只好求助于你,你可以帮他解决吗? 提示:输入数据大于32000组. 输入 每行只有一个正整数N,N小于32768. 输出 对应每个输入,输出兑换方法数. 示例输入 100 1500 示例输出 884 188251 ///题目中出现的32768的意义是2的15次方,是long(int )型变量的

SDUTOJ 小P的故事——神奇的换零钱

<pre name="code" class="cpp">#include<stdio.h> #include<string.h> int dp[40000]; int main() { int n,i,j,a[3]={1,2,3}; dp[0]=1; for(i=0;i<=2;i++) for(j=a[i];j<=32769;j++) dp[j]=dp[j]+dp[j-a[i]]; while(scanf("

SDUTOJ 2775 小P的故事——神奇的饭卡

#include<iostream> #include<memory.h> using namespace std; int max1(int a,int b) { return a>b?a:b; } int dp[10100]; int main() { int n,t,wi[10100],max,p,i,j,s; while(cin>>n) { if(n==0) { break; } max=-1; memset(wi,0,sizeof(wi)); s=0;

SDUTOJ 2776 小P的故事——神奇的分组

#include<iostream> #include<math.h> #include<memory.h> using namespace std; int dp[200],a[200]; int main() { int n,i,j,m; cin>>n; while(n--) { memset(dp,0,sizeof(dp)); memset(a,0,sizeof(a)); int p=0; dp[0]=1; cin>>m; for(i=2;

SDUT3145:Integer division 1(换零钱背包)

题目:传送门 题目描述 整数划分是一个非常经典的数学问题. 所谓整数划分,是指把一个正整数n写成为n=m1+m2+...+mi的形式,其中mi为正整数,并且1<=mi<=n,此时,{m1, m2, ..., mi}为n的一个划分.如果{m1, m2, ..., mi}中的最大值不超过m,即max{m1, m2, ..., mi}<=m,那么我们称之为整数n的一个m划分. 现在给出你正整数n和m,请你输出n的m划分的数量. 例如,当n=4时,有5个划分,即{4}, {3,1}, {2,2}

小p的故事系列

http://acm.sdut.edu.cn/sdutoj/problem.php?action=seach 小P的故事——神奇的Dota #include <stdio.h> #include <stdlib.h> #include <string.h> int V; int f[100001]; int c[3] = {0,150,200,350}; int ans; int max(int a,int b) { return a>b?a:b; } int m

贪心算法换零钱(java)

贪心算法思想 贪心算法总是做出在当前看来做好的选择.也就是说贪心算法并不从整体最后考虑,他做出的选择只是局部最优选择.他所做出的仅是在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解. 1.算法思路 贪心算法是一种不追求最优解,只希望得到较为满意解的方法.贪心算法一般可以快速得到满意的解,因为它省去了为找最优姐要穷尽所有肯呢个而必须耗费大量时间.贪婪(心)算法是一种改进了的分级处理方法.其核心是根据题意选取一种

关于SICP 1.2.2节中的换零钱方式的统计研究及其迭代实现。

关于SICP 1.2.2节中的换零钱方式的统计研究及其迭代实现 最近开始看sicp(计算机程序的构造和解释)一书,此书竟然是mit的计算机入门教材,不得不令人感叹天朝大学教育与真正一流大学的差距之大..我们在学习c语言的时候,人家已经开始学习剥离具体语言之外的编程思想了..扯远了,说回正题 sicp在1.2.2节中提到了一个有意思的换零钱实例: 将1美元(100美分)换成半美元,1/4美元,10美分,5美分,1美分的零钱,一共有多少种换法? 初看感觉有点无从下手,脑子里想的是各种排列组合,一片混

动态规划--换零钱

题目描述 想兑换100元钱,有1,2,5,10四种钱,问总共有多少兑换方法 递归解法 #include<iostream> using namespace std; const int N = 100; int dimes[] = {1, 2, 5, 10}; int arr[N+1] = {1}; int coinExchangeRecursion(int n, int m) //递归方式实现,更好理解 { if (n == 0) //跳出递归的条件 return 1; if (n <