zoukankan      html  css  js  c++  java
  • poj1664

    题意:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

    分析:dp,我们认为每个盘子所放的苹果数组成的数列是降序的,讨论最后一个盘子放不放苹果,若放则前面每个盘子都放,方法数相当于把每盘方一个之后剩下的m-n个苹果往n个盘子里放,若不放则相当于把m个苹果放入n-1个盘子。

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    usingnamespace std;

    #define maxn 11

    int f[maxn][maxn];

    int main()
    {
    //freopen("t.txt", "r", stdin);
    for (int i =0; i < maxn; i++)
    f[i][
    0] =1;
    for (int i =0; i < maxn; i++)
    f[
    0][i] =0;
    for (int i =1; i < maxn; i++)
    for (int j =1; j < maxn; j++)
    if (j >= i)
    f[i][j]
    = f[i][j - i] + f[i -1][j];
    else
    f[i][j]
    = f[j][j];
    int t;
    int m, n;
    scanf(
    "%d", &t);
    while (t--)
    {
    scanf(
    "%d%d", &m, &n);
    printf(
    "%d\n", f[n][m]);
    }
    return0;
    }
  • 相关阅读:
    创新工场 笔试1
    C++的异常处理
    阿里笔试题2
    阿里笔试题1
    控制CPU占用率曲线
    再探结构体字节对齐问题
    1401
    pancake sort的几个问题
    CF198 D2
    谨慎设计一个单例类
  • 原文地址:https://www.cnblogs.com/rainydays/p/2082958.html
Copyright © 2011-2022 走看看