外观数列

每日一练社区 2021-08-12 15:21:53

给定一个正整数 n ,输出外观数列的第 n 项。

「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。

你可以将其视作是由递归公式定义的数字字符串序列:

  • countAndSay(1) = "1"
  • countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。

前五项如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221
第一项是数字 1 
描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11"
描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21"
描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211"
描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221"

描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。

例如,数字字符串 "3322251" 的描述如下图:

     

    示例 1:

    输入:n = 1
    输出:"1"
    解释:这是一个基本样例。
    

    示例 2:

    输入:n = 4
    输出:"1211"
    解释:
    countAndSay(1) = "1"
    countAndSay(2) = 读 "1" = 一 个 1 = "11"
    countAndSay(3) = 读 "11" = 二 个 1 = "21"
    countAndSay(4) = 读 "21" = 一 个 2 + 一 个 1 = "12" + "11" = "1211"
    

     

    提示:

    • 1 <= n <= 30
    ...全文
    725 15 打赏 收藏 转发到动态 举报
    AI 作业
    写回复
    用AI写文章
    15 条回复
    切换为时间正序
    请发表友善的回复…
    发表回复
    一王打不尽333 2023-09-11
    • 打赏
    • 举报
    回复
    选项只看逻辑问题就可以找到正确答案
    CSDN-Ada助手 2023-12-26
    • 举报
    回复
    @一王打不尽333 是的,选项1中的逻辑是错误的,应该使用选项2中的代码来正确完成函数。感谢您的指出!
    2301_77080566 2023-07-31
    • 打赏
    • 举报
    回复
    *p=为什么加星号
    源来酱紫 2023-11-17
    • 举报
    回复
    @2301_77080566 指针
    fsdf1151 2023-05-22
    • 打赏
    • 举报
    回复
    我怀疑题目就是错的,不是数列,所以没有正确答案的
    CSDN-Ada助手 2023-05-22
    • 举报
    回复
    @fsdf1151 不用怀疑,这个题目是有正确答案的。确实不像传统的数列,但它符合递归公式的定义,每一项都是对前一项的描述。您可以看一下题目描述中的例子,可以更好地理解这个递归过程。
    2301_76241354 2023-01-25
    • 打赏
    • 举报
    回复
    这不是python嘛
    CSDN-Ada助手 2023-04-28
    • 举报
    回复
    @2301_76241354 CSDN助手: 不好意思,这是C语言的代码实现。如果您需要Python版本的外观数列算法可以在网上搜索相关资料。
    Brabbitl 2022-10-25
    • 打赏
    • 举报
    回复
    为啥练习不能选择难易程度,这么难有几个做的出来,而且正确答案运行也不对
    Brabbitl 2022-10-25
    • 打赏
    • 举报
    回复
    把正确答案在Python中运行,提示无效字符,无语,都不知道哪儿有问题,无语
    Wurlizz 2022-09-17
    • 打赏
    • 举报
    回复
    纯瞎蒙……
    违规昵称9527 2022-04-25
    • 打赏
    • 举报
    回复

    答案有问题,g++编译发现根本输出永远是1.打桩发现parase函数的传进来的输出指针*q++ = p[0];的时候覆盖了前面步骤的个数赋值。而且那里的两个循环跟神经病一样。

    W_chuanqi 2022-04-03
    • 打赏
    • 举报
    回复 1
    看看我的思路有什么问题
    https://blog.csdn.net/W_chuanqi/article/details/123936911?spm=1001.2014.3001.5501
    
    一点一滴漾开 2021-12-09
    • 打赏
    • 举报
    回复

    觉得重要的是思想吧,这道题需要找到重复的数

    光年外的少年 2021-10-28
    • 打赏
    • 举报
    回复
    太难了,看不懂,刚开始学习C语言

    11,808

    社区成员

    发帖
    与我相关
    我的任务
    社区描述
    Study well and make progress every day
    其他 企业社区
    社区管理员
    • 每日一练社区
    • CSDN学习
    • 幻灰龙
    加入社区
    • 近7日
    • 近30日
    • 至今
    社区公告
    暂无公告

    试试用AI创作助手写篇文章吧