首页 > 代码库 > HDU 4148 Length of S(n)(字符串)

HDU 4148 Length of S(n)(字符串)

题目

 

字符串处理

题意要猜,解析见代码:

 

/*这题每个S(n)是描述S(n-1)值例如:S(1)=1;S(2)=11;即描述S(1)有1个1=11S(3)=21;即描述S(2)有2个1=21S(4)=1211;即描述S(3)有1个2和2个1=1211....*/#include <cstdio>#include<iostream>#include <cstring>#include <algorithm>using namespace std;struct tt{    int nu[5050];    int n;}a[35];int main() {    a[1].n=1;    a[1].nu[0]=1;    for(int i=2;i<31;i++){        int num=1,pre=a[i-1].nu[0],idd=0;        for(int j=1;j<a[i-1].n;j++){            if(pre!=a[i-1].nu[j]){                                    int tep[10],id=0;                    while(num!=0){                        tep[id++]=num%10;                        num=num/10;                    }                    for(int ii=id-1;ii>=0;ii--){                        a[i].nu[idd++]=tep[ii];                    }                    a[i].nu[idd++]=a[i-1].nu[j-1];                num=1;                pre=a[i-1].nu[j];            }            else {                num++;            }        }            int tep[10],id=0;                    while(num!=0){                        tep[id++]=num%10;                        num=num/10;                    }                    for(int ii=id-1;ii>=0;ii--){                        a[i].nu[idd++]=tep[ii];                    }                    a[i].nu[idd++]=a[i-1].nu[a[i-1].n-1];        a[i].n=idd;    }    int n;    while(scanf("%d",&n),n)    {        cout << a[n].n <<endl;    }    return 0;}
View Code