为了花儿能够茁壮成长,每一朵花的上下左右四个方向不能有其他的花。问有多少种种花的方案。
为防止答案过大,答案对1e9+7取模。
public int solve (int n) {
// write code here
int[][] dp=new int[n][8];
for (int i = 0; i < 7; i++) {
if(i!=3&&i!=6&&i!=7){
dp[0][i]=1;
}
}
for (int i = 1; i < n; i++) {
for (int j = 0; j < 7; j++) {
if(j==3||j==6||j==7){
continue;
}
for (int k = 0; k < 7; k++) {
int x=j&k;
if(k==3||k==6||k==7||x!=0){
continue;
}
dp[i][j]=(dp[i][j]+dp[i-1][k])%((int)Math.pow(10,9)+7);
}
}
}
int res=-1;
for (int i = 0; i < 7; i++) {
if(i!=3&&i!=6&&i!=7){
res=(res+dp[n-1][i])%((int)Math.pow(10,9)+7);
}
}
return res;
}