每日一小练——二项式系数加法解

上得厅堂,下得厨房,写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练!


题目:二项式系数加法解


内容:请编写一个程序,仅仅用加法,求出n中取r个组合系数C(n,r),而且尽可能地使加法数目减少。


关于二项式:在数学里,二项式系数,或组合数,是定义为形如(1 + x)的二项式n次幂展开后x的系数(当中n为自然数,k为整数),通常记为。从定义可看出二项式系数的值为整数。这是来自百度的定义。我就不再赘余了。

关于二项式系数我们有一条性质使我们能够使用递归形式:

C(n,r)=C(n,r-1)+C(n-1,r-1) 

所以写出递归代码


#include <iostream>
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{int c(int n, int r);cout << c(8,3)<<endl;getchar();return 0;
}int c(int n, int r)
{if (n == r || r == 0){return 1;}else{return c(n - 1, r) + c(n - 1, r - 1);}
}

依据我们老祖先发明的杨辉三角的性质我们也能够写出非递归的形式


#include <iostream>
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{int c(int n, int r);cout << c(8,3)<<endl;getchar();return 0;
}int c(int n, int r)
{int result[1000];int i, j;result[0] = 1;for (i = 1; i <= n; i++){for (result[i] = 1, j = i - 1; j >= 1; j--){result[j] += result[j - 1];}}return result[r];
}

只是事实上上面两种方法都不是加法使用最少的方式,最少的方式是通过排列递归路线,如图




图中给出了C(8,3)的运算递归路线,每一个下顶点都是由上两个顶点加和,所以我们能够又一次排列加法顺序,使得加法按行进行,便可节省近三分之中的一个的加法运算效率非常好。

实现代码例如以下:


#include <iostream>
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{int c(int n, int r);cout << c(8,3)<<endl;getchar();return 0;
}int c(int n, int r)
{int result[1000];int i, j;for (i = 0; i <= r; i++){result[i] = 1;}for (i = 1; i <= n - r; i++){for (j = 1; j <= r; j++){result[j] += result[j - 1];}}return result[r];
}


三段程序的实验结果同样:




欢迎大家增加每日一小练,嘿嘿!

每天练一练,日久见功夫,加油!


            -End-

參考文献:《c语言名题精选百则》


转载于:https://www.cnblogs.com/mengfanrong/p/3757885.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为、苹果、高通,谁在领跑?全面解读清华AI芯片报告

来源&#xff1a;智东西摘要&#xff1a;本文全面讲解人工智能芯片&#xff0c;系统梳理人工智能芯片的发展现状及趋势。2010 年以来&#xff0c;由于大数据产业的发展&#xff0c;数据量呈现爆炸性增长态势&#xff0c;而传统的计算架构又无法支撑深度学习的大规模并行计算需求…

SSD300网络结构(pytorch)+多尺度训练与测试

一.SSD300 1.如图是预测框的相应feature map 这里smin是0.2&#xff0c;表示最底层的scale是0.2&#xff1b;smax是0.9&#xff0c;表示最高层的scale是0.9,m代表产生尺度预测的feature map个数。 其中anchor的长宽关系&#xff0c;s就是上图中的scale,a就是上图中的anchor …

01-08-02【Nhibernate (版本3.3.1.4000) 出入江湖】二级缓存:NHibernate自带的HashtableProvider...

第一步骤&#xff1a;hibernate.cfg.xml文件补上如下配置&#xff1a; <?xml version"1.0" encoding"utf-8"?> <!-- This template was written to work with NHibernate.Test. Copy the template to your NHibernate.Test project folder and…

2018, 自动驾驶异常艰难的一年

编译&#xff1a;张玺 &#xff0c;编辑&#xff1a;宇多田摘要&#xff1a;虽然文章几乎聚焦于美国硅谷的技术公司&#xff0c;但这并不意味着作者提出的种种问题不存在于中国的技术公司身上。有意思的是&#xff0c;作者批评了各大公司此前疯狂立 flag&#xff0c;却最后纷纷…

目标检测矩形框与polygon数据增加--裁剪,拓展,旋转

1.裁剪 import torch from torchvision import transforms import cv2 import numpy as np import types from numpy import random class RandomSampleCrop(object):"""CropArguments:img (Image): the image being input during trainingboxes (Tensor): th…

医生们说,AI不会取代我们!

来源&#xff1a;IEEE电气电子工程师学会每次人工智能在医疗任务中与医生进行竞争&#xff08;对此我们已经报道过很多次&#xff09;时&#xff0c;一个问题不可避免地浮出水面&#xff1a;人工智能会取代医生吗&#xff1f;如果你与AI 专家或硅谷投资者交谈&#xff0c;答案往…

ubuntu安装python3.5+pycharm+anaconda+opencv+docker+nvidia-docker+tensorflow+pytorch+Cmake3.8

一&#xff0c;切换python版本为3.5 装好ubuntu&#xff0c;python版本是2.7的 我自己安装并更改打开为python3.5 sudo apt-get install python3.5 设置优先级和默认环境&#xff1a; sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 su…

学界 | 量化深度强化学习算法的泛化能力

来源&#xff1a;AI 科技评论OpenAI 近期发布了一个新的训练环境 CoinRun&#xff0c;它提供了一个度量智能体将其学习经验活学活用到新情况的能力指标&#xff0c;而且还可以解决一项长期存在于强化学习中的疑难问题——即使是广受赞誉的强化算法在训练过程中也总是没有运用监…

《科学》评出2018年度十大科学突破事件

来源&#xff1a;科学大院《科学》杂志每年会评出在即将过去的一年里最为重要的十大科学突破&#xff08;Science Breakthrough&#xff09;。今年&#xff0c;夺得年度突破桂冠的是“单细胞水平细胞谱系追踪技术”&#xff0c;帮助破获多起悬案的法医系谱技术、#MeToo 运动等也…

递归理解以及时间复杂度计算

一.复杂度分析&#xff1a; 可以理解为递归的深度就是空间复杂度&#xff0c;时间复杂度就是O(T*depth),其中&#xff34;是每个递归函数的时间复杂度&#xff0c;depth是递归深度&#xff0e; #空间复杂度O(1) def sum1_(n):res 0for i in range(n1):resireturn res#递归 空…

性价比高出英特尔45%,亚马逊的云服务器芯片如何做到?| 解读

来源&#xff1a;TheNextPlatform编译&#xff1a;机器之能 张玺摘要&#xff1a;到目前为止&#xff0c;亚马逊和其他大型云运营商几乎全部使用英特尔的 Xeon 芯片。虽然在服务器芯片市场&#xff0c;英特尔市场占有率非常高&#xff0c;但亚马逊正使用折扣策略来赢得客户。亚…

GIOU loss+DIOU loss+CIOU loss

一.IOU 1.GIOU解决没有交集的框,IOU为0,其损失函数导数为0,无法优化的问题。 图1 GIOU,IOU,l2范数差异 a)可看出 l2值一样,IOU值是不一样的,说明L1,L2这些Loss用于回归任务时&#xff0c;不能等价于最后用于评测检测的IoU. b)可看出当框有包含关系,GIOU就退化为IOU 其是找…

《科学》十大年度科学突破反映的新动向

来源&#xff1a;新华网摘要&#xff1a;从测定分子结构到宇宙探索&#xff0c;从发现远古动物到揭示细胞的秘密&#xff0c;美国权威学术刊物《科学》杂志评选的2018年十大科学突破&#xff0c;在时间和空间尺度上拓宽着人类认知的边界&#xff0c;也反映了近年来科学发展的三…

ctpn论文阅读与代码

代码地址: https://github.com/zonghaofan/ctpn_torch 1.通用的目标检测是封闭的,而文字是封闭且连续 2. 构造一系列宽度相等的小文本,回归中心y坐标和高度 3. 对于边界回归x坐标,在进一次修正 4.整个模型就是backbone提取特征,将每个像素点的相邻3*3像素拉成行向量,利用空间…

yum配置与使用

yum配置与使用(很详细) yum的配置一般有两种方式&#xff0c;一种是直接配置/etc目录下的yum.conf文件&#xff0c;另外一种是在/etc/yum.repos.d目录下增加.repo文件。一、yum的配置文件$ cat /etc/yum.conf [main]cachedir/var/cache/yum #yum下载的RPM包的缓存目录k…

新技术不断涌现,下一代云计算的突破口在哪里?

来源&#xff1a;日知录技术社区这是一个IT技术飞速发展的时代&#xff0c;在硬件基础设施的不断升级以及虚拟化网络等技术的日益成熟下&#xff0c;云厂商也正面临着各种新技术带来的巨大挑战。从数据中心的基础建设到云平台的系统构建再到产品底层的技术改革&#xff0c;该如…

生成高斯热力图(craft中有使用)+2d heatmap+3d heatmap

一.生成高斯热力图 from math import exp import numpy as np import cv2 import osclass GaussianTransformer(object):def __init__(self, imgSize512, region_threshold0.4,affinity_threshold0.2):distanceRatio 3.34scaledGaussian lambda x: exp(-(1 / 2) * (x ** 2))…

POP动画[1]

POP动画[1] pop动画是facebook扩展CoreAnimation的,使用及其方便:) 1:Spring系列的弹簧效果(两个动画kPOPLayerBounds与kPOPLayerCornerRadius同时运行) #import "RootViewController.h" #import "YXEasing.h" #import "POP.h" #import "YX…

远比5G发展凶猛!物联网2018白皮书,国内规模已达1.2万亿

来源&#xff1a;智东西摘要&#xff1a;研判物联网的技术产业进展情况&#xff0c;梳理消费物联网、智慧城市物联网、生产性物联网三类物联网应用现状及驱动因素 。在供给侧和需求侧的双重推动下&#xff0c;物联网进入以基础性行业和规模消费为代表的第三次发展浪潮。 5G、 低…

收缩分割多边形(PSENet中有使用)

目的:为了解决密集文本的分割问题 代码: # -*- codingutf-8 -*- import os import cv2 import Polygon as plg import pyclipper import numpy as npdef dist(a, b):return np.sqrt(np.sum((a - b) ** 2))#计算周长 def perimeter(bbox):peri 0.0for i in range(bbox.shape[…