1sting
Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : Accepted Submission(s) :
Problem Description
You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or leave the ‘1’ there. Surly, you may get many different results. For example, given 1111 , you can get 1111, 121, 112,211,22. Now, your work is to find the total number of result you can get.
Input
The first line is a number n refers to the number of test cases. Then n lines follows, each line has a string made up of ‘1’ . The maximum length of the sequence is 200.
Output
The output contain n lines, each line output the number of result you can get .
Sample Input
3
1
11
11111
Sample Output
1
2
8
这道题和大菲波数一样的,就多了些字符串中字符数统计,一个strlen函数就能解决,后面怎么办,自己回顾吧!
代码如下:
#include<stdio.h> #include<string.h> int main () { int a[201][100]; int T,i,c,n,m,j; memset(a,0,sizeof(a)); a[1][0]=1;a[2][0]=2; for(c=0,i=3;i<201;i++) for(j=0,m=0;j<=100;j++) { c=a[i-1][j]+a[i-2][j]+m; a[i][j]=c%10; m=c/10; } scanf("%d",&T); getchar(); while(T--) { char b[201]; int l,k; gets(b); l=strlen(b); for(i=99,k=0;i>=0;i--) { if(a[l][i]!=0) k++; if(k!=0) printf("%d",a[l][i]); } printf("\n"); } return 0; }
原文:http://blog.csdn.net/hanhai768/article/details/23606181