程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 計蒜客_計數和數數(C語言實現),數數

計蒜客_計數和數數(C語言實現),數數

編輯:關於C語言

計蒜客_計數和數數(C語言實現),數數


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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved