2017蓝桥杯杨辉三角(C++C组)
题目:
杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要。
第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;
}
2017蓝桥杯杨辉三角(C++C组)的更多相关文章
- Java实现第八届蓝桥杯杨辉三角
杨辉三角 杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要. 第0行: 1 第1行: 1 1 第2行: 1 2 1 第3行: 1 3 3 1 第4行: 1 4 6 4 1 - 两边的元素都是 ...
- 2017蓝桥杯等差素数(C++B组)
题目 : 等差素数列 2,3,5,7,11,13,....是素数序列.类似:7,37,67,97,127,157 ...
- 2017蓝桥杯购物单(C++B组)
原题: 标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞.这不,XX大促销又来了!老板夫人开出了长长的购物单,都是 ...
- 2017蓝桥杯日期问题(C++B组)
标题:日期问题小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的, ...
- 2017蓝桥杯最大公共子串(C++B组)
题目: 最大公共子串长度问题就是:求两个串的所有子串中能够匹配上的最大长度是多少.比如:"abcdkkk" 和 "baabcdadabc",可以找到的最长的公共 ...
- 2017蓝桥杯取位数(C++B组)
题目: 标题:取数位求1个整数的第k位数字有很多种方法.以下的方法就是一种.// 求x用10进制表示时的数位长度 int len(int x){ if(x<10) return 1; retur ...
- 2017蓝桥杯承压计算(C++ B组)
标题:承压计算X星球的高科技实验室中整齐地堆放着某批珍贵金属原料.每块金属原料的外形.尺寸完全一致,但重量不同.金属材料被严格地堆放成金字塔形. ...
- 2017蓝桥杯Excel地址(C++C组)
题目:Excel地址Excel单元格的地址表示很有趣,它使用字母来表示列号.比如,A表示第1列,B表示第2列,Z表示第26列,AA表示第27列,AB表示第28列,BA表示第53列,....当然Exce ...
- 2017蓝桥杯算式900(C++C组)
题目:算式900 小明的作业本上有道思考题: 看下面的算式: (□□□□-□□□□)*□□=900 其中的小方块代表0~9的数字,这10个方块刚好包含了0~9中的所有数字. 注意:0不能作为某 ...
随机推荐
- computed 里面 不能写箭头函数 都要写 function () {} 否则页面会都不显示
computed 里面 不能写箭头函数 都要写 function () {} 否则页面会都不显示
- 雅奇880、990、小土豆调用EPX Studio 编译的DLL的编程方法~
在雅奇990中,使用“外部文件-调用链接库文件”命令实现与EP的通信,例如: 1.调用链接库文件(取项目文件信息() + '资源文件\Project1.dll', 'Unit1.rpas:Result ...
- 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档 (上篇)
前言 为什么在开发中,接口文档越来越成为前后端开发人员沟通的枢纽呢? 随着业务的发张,项目越来越多,而对于支撑整个项目架构体系而言,我们对系统业务的水平拆分,垂直分层,让业务系统更加清晰,从而产生一系 ...
- 分享macOS平台好用的视频分割、合并视频、提取音频、分离音频、音频转码的工具CCVideo
CCVideo 是一款运行在macOS上可分割视频(可多段分割).合并视频.提取音频.分离音频.音频转码的工具,操作方便,只需简单几步,便可轻松完成. 下载地址
- 简单BBS项目开始(二)
登陆和生成图片验证码 1.生成图片 pillow 1.生成图片的模块pillow,在python中安装pillow,在Django中使用时用PIL2. 在页面上<img id="val ...
- 使用toString()检测对象类型
可以通过toString() 来获取每个对象的类型.为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或 ...
- mycat主要参数
以下内容源于mycat官方文档,记录下来方便直接查看: mycat版本:1.6 负载均衡类型,目前的取值有 3 种:1. balance="0", 不开启读写分离机制,所有读操作都 ...
- Hive常用的10个系统函数及作用
聚合函数 函数处理的数据粒度为多条记录. sum()—求和 count()—求数据量 avg()—求平均直 distinct—求不同值数 min—求最小值 max—求最人值 分析函数 Analytic ...
- java接口自动化(二) - 接口测试的用例设计
1.简介 在这篇文章里,我们来学习一下接口测试用例设计,主要是来学习一些用例设计要点.其实说白了,接口用例设计和功能用例设计差不多,照猫画虎即可.不要把它想象的多么高大上,多么的难,其实一样,以前怎么 ...
- Spark在Windows环境下的配置
1.下载 下载地址:http://spark.apache.org/downloads.html. 选择下面版本下载. 2.操作流程:https://blog.csdn.net/nxw_tsp/art ...