NYOJ 1103 —— m划分为n个正整数的个数

多边形划分

时间限制:1000 ms  |  内存限制:65535 KB

描述

Give you a convex(凸边形), diagonal n-3 disjoint divided into n-2 triangles(直线), for different number of methods, such as n=5, there are 5 kinds of partition method, as shown in Figure

输入
The first line of the input is a n (1<=n<=1000), expressed n data set.
The next n lines each behavior an integer m (3<=m<=18), namely the convex edges.
输出
For each give m,, output how many classification methods.
example output: Case #a : b
样例输入
3
3
4
5
样例输出
Case #1 : 1
Case #2 : 2
Case #3 : 5
提示
Catalan number
#include <cstdio>
#include <iostream>

using namespace std;

int dp[20];

int f(int n)
{
    if(dp[n])    return dp[n];
    if(n == 2 || n == 3)    return 1;
    if(n == 4)    return 2;

    int ret = 0;
    for(int i=2; i<n; i++) {
        ret += f(i) * f(n-i+1);
    }
    return dp[n] = ret;
}

int main ()
{
    int n, m;
    scanf("%d", &n);
    for(int kase=1; kase<=n; kase++) {
        scanf("%d", &m);
        printf("Case #%d : %d\n", kase, f(m));
    }

    return 0;
}

NYOJ 1103 —— m划分为n个正整数的个数

时间: 2024-10-13 16:04:40

NYOJ 1103 —— m划分为n个正整数的个数的相关文章

NYOJ 651 —— n划分为2个以上不同正整数的划分个数

Cut the rope 时间限制:1000 ms  |  内存限制:65535 KB 描述 We have a rope whose length is L. We will cut the rope into two or more parts, the length of each part must be an integer, and no two parts have the same length. Your task is to calculate there exists ho

47、软件需求工程的活动可以划分为5个独立的阶段:需求获取、需求建模、形成需求规格、需求验证和需求管理,需求建模是()

2013年下半年软考高级信息系统项目管理师综合知识真题答案与解析: 47.软件需求工程的活动可以划分为5个独立的阶段:需求获取.需求建模.形成需求规格.需求验证和需求管理,需求建模是() A.分析需求的正确性和可行性的过程 B.对需求的抽象描述 C.对生成需求模型构件的精确的形式化的描述 D.开发.捕获和修订用户的需求 信管网参考答案:B 信管网解析: 需求建模就是需求分析过程,目的是对各种需求信息进行分析并抽象描述,为目标系统建立一个概念模型.软件需求工程活动的5个阶段:http://www.

NYOJ 746 - 正整数n划分为m段,求m段的最大乘积 【区间DP】

整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 描述 给出两个整数 n , m ,要求在 n 中加入m - 1 个乘号,将n分成m段,求出这m段的最大乘积 输入 第一行是一个整数T,表示有T组测试数据接下来T行,每行有两个正整数 n,m ( 1<= n < 10^19, 0 < m <= n的位数): 输出 输出每组测试样例结果为一个整数占一行 样例输入 2 111 2 1111 2 样例输出 11 121 #include <cstdio>

410. Split Array Largest Sum 把数组划分为m组,怎样使最大和最小

[抄题]: Given an array which consists of non-negative integers and an integer m, you can split the array into m non-empty continuous subarrays. Write an algorithm to minimize the largest sum among these m subarrays. Note:If n is the length of array, as

[Swift]LeetCode698. 划分为k个相等的子集 | Partition to K Equal Sum Subsets

Given an array of integers nums and a positive integer k, find whether it's possible to divide this array into k non-empty subsets whose sums are all equal. Example 1: Input: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 Output: True Explanation: It's possible

划分为k个相等的子集

给定一个整数数组  nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和. 注意: 1 <= k <= len(nums) <= 160 < nums[i] < 10000 class Solution { private: bool canParti

Java把内存划分为4个部分 1. 代码区 1、栈区 3、堆区 4、静态区域

1.栈区(stacksegment)—由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源 2.堆区(heapsegment)—一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收 3.静态区(datasegment)—存放全局变量,静态变量和字符串常量,不释放 4.代码区(codesegment)—存放程序中方法的二进制代码,而且是多个对象共享一个代码空间区域

NYOJ 571 —— 各种划分数

整数划分(三) 时间限制:1000 ms  |  内存限制:65535 KB 描述 整数划分是一个经典的问题.请写一个程序,完成以下要求. 输入 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) 输出 对于输入的 n,k;第一行: 将n划分成若干正整数之和的划分数.第二行: 将n划分成k个正整数之和的划分数.第三行: 将n划分成最大数不超过k的划分数.第四行: 将n划分成若干个 奇正整数之和的划分数.第五行: 将n划分成若干不同整数之和的划分数.第六

poj 北京大学 2014研究生推免上机考试(校内)

考试完后过了这么久,来发福利了攒人品了~~~ 大家可以在poj地址http://bailian.openjudge.cn/tm201401/找到所有试题,并可以在百练中搜索相应试题自己练习. A:单词排序 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字母顺序输出这些单词(即按照字符串中字母的ASCII码排序,区分大小写,当首字母相同时,比较第2个字母,依次类推),要求重复的单词只输出一次. 输入 一行单词序列,最少1个单