题目:
思路分析:
利用动态规划的思想:
每一位的决策取决于上一位的决策
具体状态转移看下图:
代码实现:
/*
*@Author: GuoJinlong
*@Language: C++
*/
//#include <bits/stdc++.h>
/*
* __----~~~~~~~~~~~------___
* . . ~~//====...... __--~ ~~
* -. \_|// |||\\ ~~~~~~::::... /~
* ___-==_ _-~o~ \/ ||| \\ _/~~-
* __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~
* _-~~ .=~ | \\-_ '-~7 /- / || \ /
* .~ .~ | \\ -_ / /- / || \ /
* / ____ / | \\ ~-_/ /|- _/ .|| \ /
* |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\
* ' ~-| /| |-~\~~ __--~~
* |-~~-_/ | | ~\_ _-~ /\
* / \ \__ \/~ \__
* _--~ _/ | .-~~____--~-/ ~~==.
* ((->/~ '.|||' -_| ~~-/ , . _||
* -_ ~\ ~~---l__i__i__i--~~_/
* _-~-__ ~) \--______________--~~
* //.-~~~-~_--~- |-------~~~~~~~~
* //.-~~~--\
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
* 神兽保佑 永无BUG
*/
const int MAX=1010;
const int mod=1000000007;
ll state[MAX][10];
int main(){
int n;
cin>>n;
for(int j=1;j<=n;j++){
int i=j-1;
state[j][0]=1;
state[j][1]=(state[i][0]+state[i][1]*2)%mod;
state[j][2]=(state[i][0]+state[i][2])%mod;
state[j][3]=(state[i][1]+state[i][3]*2)%mod;
state[j][4]=(state[i][1]+state[i][2]+state[i][4]*2)%mod;
state[j][5]=(state[i][3]+state[i][4]+state[i][5]*2)%mod;
}
cout<<state[n][5];
}