http://acm.hdu.edu.cn/showproblem.php?pid=4148

找规律,后一项描述前一项每一段有多少连续的相同数字。

ps:算到30项,总共的长度也不小了,开始s数组开小了,一直运行出错,郁闷好一会

View Code
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char s[40][11000];
int main()
{
    int n,i,j;
    int cnt,f;
    s[1][0]='1';
    s[1][1]='\0';
    for(i=2;i<31;i++)
    {
        cnt=1;
        f=0;
        for(j=0;j<strlen(s[i-1]);j++)
        {
            if(s[i-1][j]==s[i-1][j+1])cnt++;
            else{
                s[i][f]=cnt+'0';
                s[i][++f]=s[i-1][j];
                f++;
                cnt=1;
            }
            s[i][f]='\0';
        }
    }
    while(scanf("%d",&n),n)
    {
        int len=strlen(s[n]);
        printf("%d\n",len);
    }
    return 0; 
}