“伯爵說”序列如下: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 }