public class Main {
static int countSequences(int n, int[] b) {
int[] dp = new int[n+2];
//dp[i] = number of ways to reach index i
dp[1] = 1; //one way to reach 1
dp[2] = 1; //can jump 2 so directly reach a[2]
for (int i = 3; i <= n; i++) {
// you can come to i from i-1 only normally
dp[i] = dp[i-1];
if(b[i-2]==2) dp[i] += dp[i-2];
}
return dp[n];
}
public static void main
(String[] args
) { int n = 5;
int[] b = {1, 2, 1, 1, 2}; // Example array b
System.
out.
println(countSequences
(n, b
)); }
}
cHVibGljIGNsYXNzIE1haW4gewoKICAgIHN0YXRpYyBpbnQgY291bnRTZXF1ZW5jZXMoaW50IG4sIGludFtdIGIpIHsKICAgICAgICBpbnRbXSBkcCA9IG5ldyBpbnRbbisyXTsKICAgICAgICAvL2RwW2ldID0gbnVtYmVyIG9mIHdheXMgdG8gcmVhY2ggaW5kZXggaQogICAgICAgIGRwWzFdID0gMTsgLy9vbmUgd2F5IHRvIHJlYWNoIDEKICAgICAgICBkcFsyXSA9IDE7IC8vY2FuIGp1bXAgMiBzbyBkaXJlY3RseSByZWFjaCBhWzJdCiAgICAgICAgZm9yIChpbnQgaSA9IDM7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgICAgIC8vIHlvdSBjYW4gY29tZSB0byBpIGZyb20gaS0xIG9ubHkgbm9ybWFsbHkKICAgICAgICAgICAgZHBbaV0gPSBkcFtpLTFdOwogICAgICAgICAgICBpZihiW2ktMl09PTIpIGRwW2ldICs9IGRwW2ktMl07CiAgICAgICAgfQogICAgICAgIHJldHVybiBkcFtuXTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50IG4gPSA1OwogICAgICAgIGludFtdIGIgPSB7MSwgMiwgMSwgMSwgMn07IC8vIEV4YW1wbGUgYXJyYXkgYgoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oY291bnRTZXF1ZW5jZXMobiwgYikpOwogICAgfQp9Cg==