【PAT】B1084 外观数列(20 分)(纯C)

第一层循环,用来循环计算第几个元素
第二层用来计算当前元素的下一个

#include<stdio.h>
#include<string.h>
char aaa[100000] = { '\0' };

int main() {
	int N; scanf("%c %d",&aaa[0], &N);
	for (int i = 2; i <= N; i++) {//第几个元素
		char bbb[100000] = { '\0' };					//创建空字符串,保存生成的下一个元素
		int b = 0, num = 0;
		for (int j = 0; aaa[j] != '\0'; j++) {			//计算一个元素
			if (aaa[j] == aaa[j + 1]) {					//重复什么都不干,就计数
				num++;
			}
			else {												//不重复,该输出了
				bbb[b++] = aaa[j];
				if (num == 0)								//就一个
					bbb[b++] = '0' + 1;
				else {											//重复
					int temp = num + 1;
					num = 0;
					bbb[b++] = temp % 10 + '0';
				}
			}
		}
		strcpy(aaa, bbb);								//将生成的元素复制到原始字符串
	}
	printf("%s", aaa);
	return 0;
}
posted @ 2018-08-16 20:42  路明天  阅读(612)  评论(0编辑  收藏  举报