解题思路:
        

        注意一下变换次数为 0 的陷阱,题解操作注释就应该能说明白了,欢迎交流。

参考代码:

#include<bits/stdc++.h>
using namespace std;

char change[22][222];

char* look_say(char *num, int p) {
	int total = 0, i = 0;

	while (i < (int)strlen(num)) {
		char pos = num[i];
		/*  从当前字符计数   */
		while (pos == num[i]) {
			total++; i++;
		}

/*  把某个数字出现的次数Cat到结果上  */
		char temp[101];
		sprintf(temp, "%d", total);
		strcat(change[p], temp);

		/*    哪一个数字    */
		change[p][strlen(change[p])] = pos;

		total = 0;
	}
		/*  返回结果字符串  */
	return change[p];
}

int main() {
	char ch[101]; int i = 0, total;
	cin.getline(ch, 101);
	cin >> total;

	if (total == 0)
		puts(ch);

	else /*    变换次数    */
		for (char *temp = ch; i < total; i++)
			temp = look_say(temp, i);

	puts(change[total - 1]);
	return 0;
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论