标题:大佬们,这题思路是什么
只看楼主
a993521334
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-11-3
 问题点数:0 回复次数:1 
大佬们,这题思路是什么
二、报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其 前五项如下:
 
1.     1 2.     11 3.     21 4.     1211 5.     111221
 
1 被读作 "one 1"  ("一个一") , 即 11。 11 被读作 "two 1s" ("两个一"), 即 21。 21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。
 
 
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。 注意:整数顺序将表示为一个字符串。
 
示例 1: 输入: 1 输出: "1"
 
示例 2: 输入: 4 输出: "1211"
 
要求输入一个正整数,输出对应报数的字符串。
搜索更多相关主题的帖子: 输出 one 思路 输入 报数 
2019-11-03 15:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

void next( char s[static 4463] )
{
    char t[4463];
    char* q = t;

    char pre = s[0];
    char count = '0';
    for( char* p=s; ; ++p )
    {
        if( *p == pre )
            ++count;
        else
        {
            *q++ = count;
            *q++ = pre;
            pre = *p;
            count = '1';
        }

        if( *p == '\0' )
            break;
    }
    *q = '\0';

    memcpy( s, t, sizeof(t) );
}

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    char s[4463] = "1";
    for( unsigned i=1; i!=n; ++i )
        next( s );
    printf( "%s\n", s );
}
2019-11-04 10:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497590-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051619 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved