相临BIT数(DP)



问题

 

相邻的bit个数

 

当前有01构成的数列SS的第一个数是a1, 最后的数是anS的相邻bit数可以按如下方式求得:

a1a2 + a2a3 + a3a4 + ...

利用这个公式可以求得数列S中相邻的1的个数。比如说011111101的相邻bit个数为5111101104, 10101010

当给出数列S的长度NK时,请求一下长度为 N的数列中,相邻的bit个数为K的数列S

输入

第一行给出NK(0 ≤ K < N ≤ 1,000)

输出

第一行输出满足条件的数列S的个数除以100,000,000的余数。

 

案例输入

5 2

案例输入

6

案例说明

11100,01110, 00111, 10111, 11101, 11011

 

#include<stdio.h>
 
#define MAX 101
int D[MAX][MAX][20];
 
 
int main(){
    int n,k;
    int i,j;
    int t;
    int tc;
 
    D[1][0][0]=1;
    D[1][0][1]=1;
    n=100;
    for(i=2;i<=n;i++){
        for(j=0;j<i;j++){
            D[i][j][0]=D[i-1][j][0]+D[i-1][j][1];
            D[i][j][1]=D[i-1][j][0]+D[i-1][j-1][1];
        }
    }
 
    scanf("%d",&t);
	for (tc = 0; tc < t; tc++){
		scanf("%d%d", &n, &k);
		printf("%d\n", D[n][k][0] + D[n][k][1]);
	}
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章