PAT 甲级1140 Look-and-say Sequence
2020-04-22 10:03
411 查看
1140 Look-and-say Sequence
Look-and-say sequence is a sequence of integers as the following:
D, D1, D111, D113, D11231, D112213111, ...
where
Dis in [0, 9] except 1. The (n+1)st number is a kind of description of the nth number. For example, the 2nd number means that there is one
Din the 1st number, and hence it is
D1; the 2nd number consists of one
D(corresponding to
D1) and one 1 (corresponding to 11), therefore the 3rd number is
D111; or since the 4th number is
D113, it consists of one
D, two 1’s, and one 3, so the next number must be
D11231. This definition works for
D= 1 as well. Now you are supposed to calculate the Nth number in a look-and-say sequence of a given digit
D.
Input Specification:
Each input file contains one test case, which gives
D(in [0, 9]) and a positive integer N (≤ 40), separated by a space.
Output Specification:
Print in a line the Nth number in a look-and-say sequence of
D.
Sample Input:
1 8
Sample Output:
1123123111
迭代的方法读字符串,把每次读取
string s的结果存入
string tmp中,读完后
s = tmp再继续读
string s即可。
因为最多的迭代次数也只有 40 次,耗时 16ms;空间复杂度 O(n)
#include <iostream> #include <string> using namespace std; int main() { int n; string s; cin >> s >> n; //首个字符串是单数字的 for(int i = 1; i < n; ++i) { //注意循环从 1 开始 string tmp; for(int j = 0; j < s.size();++j) { tmp += s[j]; int cnt = 1; while(s[j+1] == s[j]) { //此次结束循环的条件 j++; //j 自增在循环内部执行 cnt++; } //跳转到下一个不相同字符通过 for 循环的 ++j 执行 tmp += to_string(cnt); } s = tmp; } cout << s; return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- I00031 Look-and-say sequence
- 1056. Mice and Rice (25)-PAT甲级真题(queue的用法)
- PAT甲级 1119. Pre- and Post-order Traversals
- 再谈 PAT甲级 1140. Look-and-say Sequence (20)
- POJ 3438 Look and Say(我的水题之路——N个M的队列)
- PAT甲级 1006. Sign In and Sign Out (25)
- 甲级PAT 1006 Sign In and Sign Out
- PAT - 甲级 - 1062. Talent and Virtue (25)(排序)
- 2.5 Look and Say(看 和 说)
- PAT甲级1006. Sign In and Sign Out
- Problem Y-25 look and say
- 【PAT甲级】1051. Pop Sequence (25)
- 水水水 zoj 2886 Look and Say
- 1006. Sign In and Sign Out (25) PAT甲级刷题
- 1051.Pop Sequence (25) PAT甲级刷题
- zoj 2886 Look and Say
- 1051. Pop Sequence (25)-PAT甲级真题
- pat 甲级sign in and sign out (c语言实现)
- PAT 甲级 1006 Sign In and Sign Out (25 分)
- HDU 1020 Encoding POJ 3438 Look and Say