zoukankan      html  css  js  c++  java
  • 蓝桥杯 字母组串(递归)


    标题:字母组串

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

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

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

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

     1 #include <stdio.h>
     2 
     3 // a个A,b个B,c个C 字母,能组成多少个不同的长度为n的串。
     4 int f(int a, int b, int c, int n)
     5 {
     6     if(a<0 || b<0 || c<0) return 0;
     7     if(n==0) return 1; 
     8     
     9     return ______________________________________ ;  // 填空
    10 }
    11 
    12 int main()
    13 {
    14     printf("%d
    ", f(1,1,1,2));
    15     printf("%d
    ", f(1,2,3,3));
    16     return 0;
    17 }

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


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

    解题思路: 通过题目的代码进行推测,首先我们看到函数里面当n=1的时候return 1 ,我们可以想到,肯定n是需要一个减的操作的,

    而且还要判断abc三个数大于0,所以可以推测abc三个数也是有减法的操作的,由此我们可以猜测到递归式子

    return  f(a-1,b,c,n-1) + f(a,b-1,c,n-1) + f(a,b,c-1,n-1)



  • 相关阅读:
    2020年4月13日
    2021年4月12日
    梦断代码阅读笔记02
    Shell基本命令
    远程链接Linux
    Linux文档与目录结构
    VMware与Centos系统安装
    linux 第一天
    day88 Vue基础
    python 生成随机验证码
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/10529864.html
Copyright © 2011-2022 走看看