题目:

杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要。

第0行:           1
第1行:          1 1
第2行:         1 2 1
第3行:        1 3 3 1
第4行:       1 4 6 4 1
....

两边的元素都是1, 中间的元素是左上角的元素与右上角的元素和。

我们约定,行号,列号都从0计数。
所以: 第6行的第2个元素是15,第3个元素是20

直观地看,需要开辟一个二维数组,其实一维数组也可以胜任。
如下程序就是用一维数组“腾挪”的解法。

// 杨辉三角的第row行,第col列 
long long f(int row, int col){
if(row<2) return 1;
if(col==0) return 1;
if(col==row) return 1;

long long a[1024];
a[0]=1;
a[1]=1;
int p = 2;
int q;

while(p<=row){
a[p] = 1;
for( _________________ ) a[q] = a[q] + a[q-1]; //填空
p++;
}

return a[col];
}

int main()
{
printf("%d\n", f(6,2));
printf("%d\n", f(6,3));
printf("%lld\n", f(40,20));
return 0;
}

请仔细分析源码,并完成划线部分缺少的代码。

注意:只提交缺少的代码,不要提交已有的代码和符号。也不要提交说明性文字。

解析:观察题目给出的代码,我们不难看出该做法的思路是利用行的叠加,实现不同行号同列号数据的变动,观察需要填空的下一行代码 a[j] = a[j] + a[j - 1] 可以看出,它这好像自动识别左边代表的行号在右边代表的行号的下一行,咦?这有猫腻,如果单纯的for(int i = 0;i < n;i++)这样很显然不能智能识别行号,是不是?对滴,就是for语句倒循环!

代码:

#include<stdio.h>
long long f(int row, int col){

if(row<2) return 1;
if(col==0) return 1;
if(col==row) return 1;

long long a[1024];
a[0]=1;
a[1]=1;
int p = 2;
int q;

while(p<=row){
a[p] = 1;
for(q = p - 1;q > 0;q--) 
a[q] = a[q] + a[q-1]; //填空
p++;
}

return a[col];
}

int main()
{
printf("%d\n", f(6,2));
printf("%d\n", f(6,3));
printf("%lld\n", f(40,20));

return 0;
}

最新文章

  1. Http client 请求
  2. Java 对象销毁
  3. IntelliJ IDEA 修改包名
  4. Xceed Ultimate Suite Xceed界面控件套包下载
  5. svg―Raphael.js Library(一)
  6. 【PHP设计模式 11_QiaoJie.php】桥接模式(针对 二维模型)
  7. Java IO(三)
  8. C# 高精度减法 支持小数(待优化)
  9. 【转】 UITableView 的indexPath
  10. 基于Grunt的版本号构建系统新手教程
  11. jdk8在windows及linux环境下安装
  12. nginx学习笔记(二)
  13. 序列化模块组 pickle,json , xml , shelve , configparser
  14. Maven介绍及安装与配置
  15. undefined reference 问题各种情况分析
  16. learning ddr init power-up initialization sequence
  17. git add -A /git add -u/git add .的用法
  18. C# 公共类
  19. Spring Boot 配置 IDEA&amp;DevTools 自编译重启
  20. AR介绍

热门文章

  1. npm 安装包总结
  2. ASP.net 简单ajax实现
  3. 菜鸟对java和Go的理解
  4. 洛谷3834 hdu2665主席树模板,动态查询区间第k小
  5. jq 导航跟随 模拟京东手机端
  6. 概率-拒绝采样 Rejection Sampling
  7. mysql5.6配置文件详解(一)
  8. 移动深度学习 Mobile-deep-learning(MDL)
  9. Hinton老爷子CapsNet再升级,结合无监督,接近当前最佳效果
  10. 近期 github 机器学习热门项目top5