描述
yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结啊。
第一行输入一个n表示有n个测试数据
以下n行,每行输入m个1
(1 <= n,m <= 200)
输出
输出这种组合种数,占一行
样例输入
3
11
111
11111样例输出
2
3
8
解题思路
斐波那契数
yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结啊。
现在给你m个1,你可以把2个1组合成一个2,这样就不是光棍了,问这样的组合有多少种??
例如(111 可以拆分为 111 12 21 有三种)
输入第一行输入一个n表示有n个测试数据
以下n行,每行输入m个1
(1 <= n,m <= 200)
输出
输出这种组合种数,占一行
样例输入
3
11
111
11111样例输出
2
3
8
解题思路
斐波那契数
#include<stdio.h>
#include<string.h>
int a[210][210];
int main()
{
char s[210];
int n,m,i,j,t;
scanf("%d",&n);
while(n--)
{
scanf("%s",s);
m=strlen(s);
memset(a,0,sizeof(a));
a[0][0]=a[1][0]=1;t=0;
for(i=2;i<=m;i++)
{
for(j=0;j<=t;j++)
{ a[i][j]+=a[i-1][j]+a[i-2][j];//不能少打一个+;
if(a[i][j]>9&&j==t) t++;
if(a[i][j]>9) {a[i][j+1]++;a[i][j]-=10;}
}
}
for(j=t;j>=0;j--)
printf("%d",a[m][j]);
printf("\n");
}
return 0;
}