方案数量

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描写叙述

给出一个N*M的棋盘。左下角坐标是(0。0)。右上角坐标是(N,M),规定每次仅仅能向上或者向右走。问从左下角走到右上角,一共同拥有多少种方案。上图是一个4*3的棋盘。

输入
多组測试数据。

每组输入两个整数N,M(0≤N,M≤30)。

输入0,0时表示结束。不做不论什么处理。

输出
对于每组測试数据,输出相应的方案数。

例子输入
4 3
2 2
0 0
例子输出
35
6

分析:这道题有2种做法。

一、推公式

ans = C(n+m, n)。由于从左下角走到右上角一共要走n+m步。往上要走n步,假设用1表示向上走。用0表示向右走。则相当于给n+m个数进行赋值,当中n个数被赋值为1,求有多少种赋值方法。仅仅需从n+m个数里挑出n个,有C(n+m, n)中挑选办法。

#include <cstdio>

long long get_ans(long long a, long long x) {
long long ans = 1;
for(long long i = 1; i <= a; i++)
ans = ans * (x - i + 1) / i;
return ans;
} int main() {
long long n, m;
while(~scanf("%lld%lld", &n, &m) && (n + m)) {
printf("%lld\n", get_ans(n, n + m));
}
return 0;
}

二、递推

由于假设要到(n, m)点,要么从(n-1, m)点过来,要么从(n, m-1)点过来。设dp[i][j]表示从(0, 0)到(i, j)有多少种方案,

则dp[i][j] = dp[i-1][j] + dp[i][j-1],最后输出dp[n][m]就是答案。

#include <cstdio>
#include <cstring> const int N = 32;
long long dp[N][N]; void get_ans() {
memset(dp, 0, sizeof(dp));
for(int i = 0; i < 31; i++)
dp[i][0] = dp[0][i] = 1;
for(int i = 1; i < 31; i++)
for(int j = 1; j < 31; j++)
dp[i][j] = dp[i-1][j] + dp[i][j-1];
} int main() {
get_ans();
int n, m;
while(~scanf("%d%d", &n, &m) && (n + m)) {
printf("%lld\n", dp[n][m]);
}
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

NYOJ 1076 计划数(公式 要么 递归)的更多相关文章

  1. 基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用

    基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extj ...

  2. ACM1229_还是A+B(求A的第K位的数公式:A%((int)(pow(10,K)))

    #include<stdio.h> #include<math.h> int main() { int A,k,B,sum,c,d; while(scanf("%d% ...

  3. E - 不容易系列之(4)――考新郎 错排数公式

    国庆期间,省城HZ刚刚举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做"考新郎",具体的操作是这样的:  首先,给每位新娘打扮得几乎一模一 ...

  4. python-函数4(递归、高阶函数)

    python-函数4(递归.高阶函数) 递归 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 递归特性: 1. 递归必须有一个明确的结束条件 2. 每次进入更深一 ...

  5. Master公式计算递归时间复杂度

    我们在算递归算法的时间复杂度时,Master定理为我们提供了很强大的便利! Master公式在我们的面试编程算法中除了BFPRT算法的复杂度计算不了之外,其他都可以准确计算! 这里用求数组最大值的递归 ...

  6. 剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣 创建线程数公式(MaxProcessMemory - JVMMemory – ReservedOsMemory)

    剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣 星期一早上到了公司,据称产品环境抛出了最可爱的异常—OutO ...

  7. HDU3183A Magic Lamp,和NYOJ最大的数一样

    A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  8. nyoj 305 表达式求值 (递归)

    表达式求值 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min ...

  9. master公式 ------ 求递归情况下的时间复杂度

    剖析递归行为和递归行为时间复杂度的估算一个递归行为的例子T(N) = a*T(N/b) + O(N^d)1) log(b,a) > d -> 复杂度为O(N^log(b,a))2) log ...

随机推荐

  1. angular 响应式表单(登录实例)

    一.表单验证 1. 只有一个验证规则: this.myGroup = this.fb.group({ email:['hurong.cen@qq.com',Validators.required], ...

  2. APP测试10点

    1.安装和卸载●应用是否可以在IOS不同系统版本或android不同系统版本上安装(有的系统版本过低,应用不能适配)●软件安装后是否可以正常运行,安装后的文件夹及文件是否可以写到指定的目录里.●安装过 ...

  3. [Angular] Omit relative path by set up in tsconfig.json

    For example, inside you component you want to import a file from two up directory: import store from ...

  4. 3D游戏《龙心传奇Dragona》全套完整源码

    <龙心传奇Dragona>全套完整源码,<Dragona Online>也叫<龙心传奇>是一款3D中古奇幻风格网络游戏,描写叙述一个充满剑.魔法.恶魔和龙的魔法大陆 ...

  5. 一起talk C栗子吧(第八回:C语言实例--素数)

    各位看官们,大家好,从今天開始.我们讲大型章回体科技小说 :C栗子,也就是C语言实例. 闲话休提, 言归正转. 让我们一起talk C栗子吧! 看官们.上一回中咱们说的是进制转换的样例,这一回咱们说的 ...

  6. Python 在线笔试

    1. 循环输入输出交互 Python在线笔试琐碎 求两个整数 A+B 的和. while True: try: (n, m) = (int(x) for x in raw_input().split( ...

  7. OC学习篇之---Foundation框架中的NSString对象和NSMutableString对象

    今天在在来继续看一下Foundation框架中的常用对象:NSString和NSMutableString 在OC中NSString对象是不可变的,和Java中的String一样的,而NSMutabl ...

  8. HDU 1496 Equations hash HDU上排名第一!

    看题传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1496 题目大意: 给定a,b,c,d.a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 ...

  9. java导出word直接下载

    导出word工具类 package util; import java.io.IOException; import java.io.Writer; import java.util.Map; imp ...

  10. Spring Boot+Mybatis+Pagehelper分页

    Spring Boot 集成MyBatis和Pagehelper分页插件 mybatis-spring-boot-starter依赖树如下: pom配置 <project xmlns=" ...