“伯爵說”序列如下:1, 11, 21, 1211, 111221, ...1 讀作 "one 1" 或者 11。11 讀作 "two 1s" 或者21。21 讀作 "one 2, one 1" 或者 1211。 格式:多組輸入,讀到文件結束。每組輸入給定一個整數n,輸出第n個序列。(1<=n<=3 ...
“伯爵說”序列如下: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 }