8787:数的划分(又是一个放苹果)

8787:数的划分

总时间限制:

1000ms

内存限制:

65536kB

描述

将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。

例如:n=7,k=3,下面三种分法被认为是相同的。

1,1,5; 1,5,1; 5,1,1;

问有多少种不同的分法。 输出:一个整数,即不同的分法。

输入

两个整数n,k (6 < n <= 200,2 <= k <= 6),中间用单个空格隔开。

输出

一个整数,即不同的分法。

样例输入

7 3

样例输出

4

提示

四种分法为:1,1,5;1,2,4;1,3,3;2,2,3。

类似 放苹果:http://www.cnblogs.com/shenben/p/5564870.html

#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
const int maxn=1101;
int f[maxn][maxn];
int n,k;
int main()
{
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++) f[i][1]=1,f[i][i]=1;
    for(int i=2;i<=n;i++)
      for(int j=1;j<i;j++)
        f[i][j]=f[i-j][j]+f[i-1][j-1];
    printf("%d",f[n][k]);
    return 0;
}
时间: 2024-10-11 18:25:26

8787:数的划分(又是一个放苹果)的相关文章

2718:移动路线(又是一个放苹果)

2718:移动路线 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 ×桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n). 小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动.小明把这只蚂蚁放在左下角的方格中,蚂蚁从 左下角的方格中移动到右上角的方格中,每步移动一个方格.蚂蚁始终在方格矩阵内移动,请计算出不

noi 8787 数的划分

题目链接:http://noi.openjudge.cn/ch0206/8787/ 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 简直跟分苹果一模一样. #include <stdio.h> using namespace std; int d[15][15]; int dp(int m,int n) { if(m==0||n==1) return 1; if(m<n) return dp(m,m); else return dp(m,n-1)+dp(m-n,n);

8787:数的划分

总时间限制: 1000ms 内存限制:  65536kB 描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5: 1,5,1: 5,1,1: 问有多少种不同的分法. 输出:一个整数,即不同的分法. 输入 两个整数n,k (6 < n <= 200,2 <= k <= 6),中间用单个空格隔开. 输出 一个整数,即不同的分法. 样例输入 7 3 样例输出 4 提示 四种分法为:1,1,5:1,2,4:

poj1664 放苹果(DPorDFS)&amp;&amp;系列突破(整数划分)

poj1664放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33661   Accepted: 20824 Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 <= t <= 20).以下每行均包含二个整数M和N,以空格分开.1<=M,N<=10. O

在10万以内判断,一个整数加上100后是一个完全平方数,再加上168又是一个完全平方数,求该数

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果. 程序源代码: #include<stdio.h> #include<math.h> int main() { long int i, x, y; for (i = 1; i<100000; i++) { x = sqrt(i + 100); y = sq

38.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

//从这个小题可以学习到完全平方数的判断 //1.先判断出题目需要一个循环来尝试不同的数,for循环较为适合 //2.题目的关键是如何表示完全平方数,运用到sqrt()函数,通过sqrt*sqrt间接的达到完全平方的要求 ?#include<iostream> #include<cmath> using namespace std; int main() { int temp1,temp2; for(int i=1;i<=10000;i++) { temp1=sqrt(i+1

一个整数,它加上100 后是一个完全平方数,再加上168 又是一个完全平方数, 请问该数是多少?

""" 一个整数,它加上100 后是一个完全平方数,再加上168 又是一个完全平方数, 请问该数是多少? """ # x*x =100+n # y*y =100+168+n res = [] for i in range(10, 100): res.append(i * i) for n in range(len(res)): a = res[n] -100 for x in range(len(res)): b = res[x] -268 if

一个整数,它加上100后是一个完全平方数, 再加上168又是一个完全平方数,请问该数是多少?

题目:一个整数,它加上100后是一个完全平方数, 再加上168又是一个完全平方数,请问该数是多少? 程序分析:在10万以内判断,先将该数加上100后再开方, 再将该数加上268后再开方,如果开方后的结果满足如下条件, 即是结果.请看具体分析: public class 第十三题完全平方数 { public static void main(String[] args) { for(int i=0; i<=100000; i++) { if(Math.sqrt(i+100) % 1==0 &&

数的划分(动规)

数的划分 总时间限制:  1000ms 内存限制:  65536kB 描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5: 1,5,1: 5,1,1: 问有多少种不同的分法. 输出:一个整数,即不同的分法. 输入 两个整数n,k (6 < n <= 200,2 <= k <= 6),中间用单个空格隔开. 输出 一个整数,即不同的分法. 样例输入 7 3 样例输出 4 提示 四种分法为:1,1,5: