分析:逐个遍历,从开头开始求,所以推荐打表。
回忆一些细节:
字符串数组赋初值:
必须在定义的时候写上:
char a[100]="aaaaa";
若 char a[100]; a="aaaaa";运行失败;
或者用 strcpy(a,"aaaaa");
strcpy,strcmp,只对字符串有效,单个数组区间不行。
计算两个字符相等必须用ascll码,两个字符串用strcmp();
字符数组赋值时一定要注意ascll码转换!
AC代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[100000],b[100000];
int main()
{
int n,i,j,l,k,flag,ans;
scanf("%d",&n);
//strcpy(a[1],"1");字符串才可以这么用!
a[0]='1';
for(i=2;i<=n;i++)
{
l=strlen(a);
k=0;
for(j=0;j<l;j++)
{
ans=1;
while(a[j]+'0'==a[j+1]+'0'&&j<l)//计算两个字符相等必须用ascll码,两个字符串用strcmp();
{
j++;
ans++;
}
b[k++]=ans+'0';//转换!!!
b[k++]=int(a[j]);//转换!!!
}
strcpy(a,b);//字符串才能用。
}
printf("%s",a);
}
/*
1
11
21
1211
*/