“伯爵说”序列如下:1, 11, 21, 1211, 111221, ...1 读作 "one 1" 或者 11。11 读作 "two 1s" 或者21。21 读作 "one 2, one 1" 或者 1211。
格式:多组输入,读到文件结束。每组输入给定一个整数n,输出第n个序列。(1<=n<=30)
注意:整数序列以字符串的形式表示。
规律:
1 由 1 个 1组成
11 由 2 个 1组成
21 由 1 个 2 和 1 个 1 组成
1211 由 1 个 1 ,1 个 2, 2 个 1组成
111221 由...
1 #include <stdio.h> 2 #include <string.h> 3 void func(char *s, int n); 4 int main() 5 { 6 int n; 7 char s[10000]; 8 while (scanf("%d", &n)!=EOF){ 9 strcpy(s, "1"); 10 func(s, n); 11 printf("%s\n", s); 12 } 13 return 0; 14 } 15 void func(char *s, int n) 16 { 17 int i, j, count, len; 18 char ch, tmp[10000]; 19 for (j = 1; j < n; ++j) { 20 len = 0; 21 for (i = 0; s[i] != ‘\0‘; ++i) { 22 if (i == 0) { 23 ch = s[i]; 24 count = 1; 25 } 26 else { 27 if (ch == s[i]) 28 ++count; 29 else { 30 len += sprintf(tmp+len, "%d%c", count, ch); 31 ch = s[i]; 32 count = 1; 33 } 34 } 35 } 36 sprintf(tmp+len, "%d%c", count, ch); 37 strcpy(s,tmp); 38 } 39 }
时间: 2024-10-03 23:00:57