详细的解释放苹果问题的链接:苹果可相同可不同,盘子可相同可不同,盘子可空和不可空,都有详细的说明···

http://www.cnblogs.com/celia01/archive/2012/02/19/2358673.html

不赘述:这里的代码是递归,记忆化搜索,避免重复计算某些数的值```

 #include <cstdio>
#include <cstring>
#define N 50
int d[N][N];
int dfs(int x,int y)//x个苹果放入y个盘子中的放法数
{
if(d[x][y] != -) return d[x][y];
if(x<) return ;//苹果个数小于0
if(x== || y == ) return ;//苹果个数等于0或者盘子个数等于1
return d[x][y] = dfs(x-y,y)+dfs(x,y-);//每个盘子都不为空||至少一个盘子为空
//每个盘子都不为空的方法相当于苹果个数x-n,y个盘子的放法····
}
int main()
{
// freopen("in.c","r",stdin);
int t;
scanf("%d",&t);
memset(d,-,sizeof(d));
while(t--)
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d\n",dfs(m,n));
}
return ;
}

还有二维DP类的

代码:

 #include <cstdio>
#include <cstring>
#define N 50
//#define debug
int d[N][N];
void init()
{
for(int i=; i<N; ++i)
d[][i] = d[][i]=d[i][]=d[i][] =;
for(int i=; i<N; ++i)
{
for(int j=; j<N; ++j)
{
if(i-j >= ) d[i][j] += d[i-j][j];
d[i][j] += d[i][j-];
}
}
#ifdef debug
for(int i=; i<=; ++i)
{
for(int j=; j<=; ++j)
{
printf("%d ",d[i][j]);
}
puts("");
}
#endif
}
int main()
{
#ifdef debug
freopen("in.c","r",stdin);
#endif
init();
int t;
scanf("%d",&t);
while(t--)
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d\n",d[m][n]);
} return ;
}

放苹果问题 DP计数 m个苹果放在n个盘子里,苹果,盘子相同,盘子可为空的更多相关文章

  1. POJ-放苹果(DP)

    放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 29074 Accepted: 18376 Description 把M个 ...

  2. m个苹果放在n个筐里,每个筐至少一个,所有的筐都一样,有多少种放法

    package com.study; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...

  3. 动态规划(DP计数):HDU 5116 Everlasting L

    Matt loves letter L.A point set P is (a, b)-L if and only if there exists x, y satisfying:P = {(x, y ...

  4. 【POJ1952】逢低吸纳 dp+计数

    题目大意:给定一个有 N 个数的序列,求其最长下降子序列的长度,并求出有多少种不同的最长下降子序列.(子序列各项数值相同视为同一种) update at 2019.4.3 题解:求最长下降子序列本身并 ...

  5. Tetrahedron(Codeforces Round #113 (Div. 2) + 打表找规律 + dp计数)

    题目链接: https://codeforces.com/contest/166/problem/E 题目: 题意: 给你一个三菱锥,初始时你在D点,然后你每次可以往相邻的顶点移动,问你第n步回到D点 ...

  6. HDU 4055 The King’s Ups and Downs(DP计数)

    题意: 国王的士兵有n个,每个人的身高都不同,国王要将他们排列,必须一高一矮间隔进行,即其中的一个人必须同时高于(或低于)左边和右边.问可能的排列数.例子有1千个,但是最多只算到20个士兵,并且20个 ...

  7. HDU 4055 Number String(DP计数)

    题意: 给你一个含n个字符的字符串,字符为'D'时表示小于号,字符为“I”时表示大于号,字符为“?”时表示大小于都可以.比如排列 {3, 1, 2, 7, 4, 6, 5} 表示为字符串 DIIDID ...

  8. 1192:放苹果(dp + 搜索)

    这道题先用搜索写的,因为我需要先打表来寻找规律. 因为数据量小所以收搜也会过 #include<iostream> #include<cstdio> #include<c ...

  9. poj 2385 树上掉苹果问题 dp算法

    题意:有树1 树2 会掉苹果,奶牛去捡,只能移动w次,开始的时候在树1 问最多可以捡多少个苹果? 思路: dp[i][j]表示i分钟移动j次捡到苹果的最大值 实例分析 0,1  1,2...说明 偶数 ...

随机推荐

  1. HDU 6015 Skip the Class

    Skip the Class 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define l ...

  2. Python爬虫Urllib库的基本使用

    Python爬虫Urllib库的基本使用 深入理解urllib.urllib2及requests  请访问: http://www.mamicode.com/info-detail-1224080.h ...

  3. rxjs学习

    推荐一个好的网站:http://cn.rx.js.org/manual/overview.html#- https://rxjs-cn.github.io/learn-rxjs-operators/o ...

  4. Redis之列表类型命令

    Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967 ...

  5. WPF 元素的查找

    预设置元素名字 WPF有两种方式设置元素的Name <StackPanel x:Name="panel"> <Label Name="name1&quo ...

  6. ps命令各个内容信息详解

        USER    用户名  PID    进程ID(Process ID)  %CPU    进程的cpu占用率  %MEM    进程的内存占用率  VSZ    进程所使用的虚存的大小(Vi ...

  7. Mishka and Divisors CodeForces - 703E

    大意: 给定$n$个数, 求选择最少的数满足积为$k$的倍数, 并且和最小 刚开始想着暴力维护$k$的素因子向量, 用map转移, 结果T了. 看了下别的dala0题解, 不需要考虑素因子, 我们考虑 ...

  8. php date时间的获取

    1.得到当前时间:date('Y-m-d H:i:s',time()); 2.得到这个月有多少天:echo $getDay = date('t',date('Y-m-d', time())); 3.得 ...

  9. dp练习(2)——老鼠的旅行

    1267 老鼠的旅行(来源:codevs) #include "bits/stdc++.h" using namespace std; ][]; ][]; int main() { ...

  10. java回收算法

    两个最基本的java回收算法:复制算法和标记清理算法                 复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B.此为新生代最常用的算法              ...