zoukankan      html  css  js  c++  java
  • 征战蓝桥 —— 2017年第八届 —— C/C++A组第5题——字母组串

    题目

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

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

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

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

    #include <stdio.h>
    
    // a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。
    int f(int a, int b, int c, int n)
    {
    	if(a<0 || b<0 || c<0) return 0;
    	if(n==0) return 1;
    
    	return ______________________________________ ;  // 填空
    }
    
    int main()
    {
    	printf("%d\n", f(1,1,1,2));
    	printf("%d\n", f(1,2,3,3));
    	return 0;
    }
    
    

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

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

    代码

    #include <stdio.h>
    
    // a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。
    int f(int a, int b, int c, int n) {
        if (a < 0 || b < 0 || c < 0) return 0;
        if (n == 0) return 1;
    
        return f(a - 1, b, c, n - 1) + f(a, b - 1, c, n - 1) + f(a, b, c - 1, n - 1);  // 填空
    }
    
    int main() {
        printf("%d\n", f(1, 1, 1, 2));
        printf("%d\n", f(1, 2, 3, 3));
        return 0;
    }
    
    
  • 相关阅读:
    如何将cordova导入Android studio,只需两步即可
    Cordova 教程 学习步骤-从零基础开始
    特效插件
    jq 命名空间
    input聚焦后光标移动至末尾
    时间常用api
    jq 便捷api jq 常用 api jq 快捷 api
    键盘事件
    创建爬网规则
    SharePoint 2013 本地开发解决方案以及程调试(真的可以)
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338598.html
Copyright © 2011-2022 走看看