既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
#### Sample Output:
1123123111
题意
给定一个 D
和 n
,按照 D
需要输出第 n
项外观序列,而外观序列的规则如下:
第 i
项序列要根据其前一项的序列生成,例如 D
等于 1
,则第 2
项为 11
,意思是前一项中 1
出现了 1
次;第 3
项为 12
,即其前一项中 1
出现了 2
次;第 3
项为 1121
,即其前一项中 1
出现了 1
次,2
出现了 1
次;第 4
项为 122111
,即其前一项 1
先连续出现了 2
次,接着2
出现了 1
次,然后 1
又出现了 1
次。
所以可以发现,每项序列是根据其上一个序列的值中每个元素连续的个数来生成的。
思路
具体思路如下:
- 输入起始序列
num
以及需要输出的项数n
。 - 模拟题目意思,用双指针来生成每项序列,
p
指向当前元素,而q
指向与p
指向元素相同的连续的最后一个元素的下一个位置,这样q-p
就是p
指向元素连续的个数。 - 输出第计算出来的第
n
项序列。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string num;
int n;
cin >> num >> n;
//进行n-1次转换
for (int i = 1; i < n; i++)
{
int len = num.size();
int p = 0;
string str = "";
while (p < len)
{
int q = p + 1;
//找出连续相同的字段
while (q < len && num[q] == num[p]) q++;
str += num[p] + to\_string(q - p);
p = q;
}
num = str;
}
//输出第n项序列
cout << num << endl;
return 0;
}
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**