华为od39

/*
有一个数列A[n]
从A[0]开始每一项都是一个数字
数列中A[n+1]都是A[n]的描述
其中A[0]=1
规则如下
A[0]:1
A[1]:11 含义其中A[0]=1是1个1 即11
表示A[0]从左到右连续出现了1次1
A[2]:21 含义其中A[1]=11是2个1 即21
表示A[1]从左到右连续出现了2次1
A[3]:1211 含义其中A[2]从左到右是由一个2和一个1组成 即1211
表示A[2]从左到右连续出现了一次2又连续出现了一次1
A[4]:111221 含义A[3]=1211 从左到右是由一个1和一个2两个1 即111221
表示A[3]从左到右连续出现了一次1又连续出现了一次2又连续出现了2次1

        输出第n项的结果
        0<= n <=59
        输入描述:
        数列第n项   0<= n <=59
        4
        输出描述
        数列内容
        111221

*/
#include
#include
#include
#include
using namespace std;
int main()
{
int n;
cin >> n;

string content = "1";
if (n == 0)
{
    cout << content[0];
    return 0;
}
for (int i = 0; i < n; i++)
{
    string next;
    char last = content[0];
    int count = 1;
    for (int j = 1; j < content.length(); j++) {
        if (content[j] == last) count++;
        else {
            next+=to_string(count);
            next += last;
            count = 1;
            last = content[j];
        }
    }
    string tt = to_string(count);
    next += tt;
    next += last;
    content = next;
}
cout << content;
return 0;

}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值