stdio源码分析_strcpy源码分析

第三方分享代码
hacker 2年前 (2023-05-23) 下载 61 1

2017年蓝桥杯软件类省赛C++大学A组第5题“字母组串”。一道代码填空题,据说这是传统的送分题,一起来看看是怎么送分的。

stdio源码分析_strcpy源码分析

* 本文内容由罗勇军老师提供。

01

题目描述

由 A,B,C 这3个字母就可以组成许多串。比如:“A”,“AB”,“ABC”,“ABA”,“AACBB” …

现在,小明正在思考一个问题:如果每个字母的个数有限定,能组成多少个已知长度的串呢?

他请好朋友来帮忙,很快得到了代码,解决方案超级简单,然而最重要的部分却语焉不详。

请仔细分析源码,填写划线部分缺少的内容。

# include<stdio.h>

// a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。

intf( inta, intb, intc, intn)

{

if(a< 0|| b< 0|| c< 0) return0;

if(n== 0) return1;

return______________________________________ ; // 填空

}

展开全文

intmain

{

printf( "%d\n", f( 1, 1, 1, 2));

printf( "%d\n", f( 1, 2, 3, 3));

return0;

}

对于上面的测试数据,小明口算的结果应该是:

6

19

注意:只填写划线部分缺少的代码,不要提交任何多余内容或说明性文字。

02

DP填空

1.C++代码

一个排列组合问题,题目要求用递归实现。答案如下:

returnf(a - 1, b, c, n - 1) + f(a, b - 1, c, n - 1) + f(a, b, c - 1, n - 1);;

2.Java代码

2017蓝桥杯Java类的第5题也是“字母组串”,这里附上答案。

publicclass_05字母组串 {

// a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。

staticintf( inta, intb, intc, intn) {

if(a < 0|| b < 0|| c < 0) return0;

if(n == 0) return1;

returnf(a - 1, b, c, n - 1) + f(a, b - 1, c, n - 1) + f(a, b, c - 1, n - 1); //填空

}

publicstaticvoidmain(String[] args){

System.out.println(f( 1, 1, 1, 2));

System.out.println(f( 1, 2, 3, 3));

}

}

03

母函数

对于排列组合问题,经典的解法是母函数。用母函数处理组合问题,较为直接。

参考本篇参考书籍 《算法竞赛入门到进阶》173页“指数型母函数”,书上的例题 hdu 1521 和这题“字母组串”几乎一样。

下面图片为所涉及到的书中内容贴图:

04

参考书籍

《算法竞赛入门到进阶》

ISBN:978-7-302-52915-6

罗勇军 郭卫斌 编著

定价:59.80元

05

精彩文章回顾

从火种到能源,华为做AI的逻辑链

华为 AI,建造中的全景图

逻辑回归的MATLAB实践|附代码

Python爬虫实例:采集微博博文|附视频

MySQL利用E-R模型的数据库概念设计|附视频

HTML5 实现黑白棋游戏 附代码

利用微信小程序实现活动报名登记 | 附代码

使用Flutter小部件跨平台开发移动端App组件 | 附代码

电脑病毒木马的清除和防范方法 | 附视频

教你用Python做在线人脸 检测

一篇文章读懂:Spark运行模式

有监督机器学习——K近邻算法解决二分类问题|附代 码

无监督机器学习——K均值算法解决病毒聚类问题|附代 码

无监督机器学习——K均值算法实现简单聚类|附代码

实战Spring Boot | 天气预报系统的开发

从火种到能源,华为做AI的逻辑链

stdio源码分析_strcpy源码分析

华为 AI,建造中的全景图

逻辑回归的MATLAB实践|附代码

Python爬虫实例:采集微博博文|附视频

MySQL利用E-R模型的数据库概念设计|附视频

相关推荐

网友评论

  • (*)

最新评论

  • 访客 2023-05-23 19:54:33 回复

    c, n - 1) + f(a, b - 1, c, n - 1) + f(a, b, c - 1, n - 1); //填空} publicstaticvoidmain(String[] args){ System.out.println(f( 1, 1, 1, 2)

    1