相臨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;
}

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