import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[][] states = new String[n+1][n+1];
for(int i=0;i<n+1;i++){
states[i] = new String[6];
}
for(int i=0;i<6;i++){
states[0][i] = 0+"";
}
long mod = 1000000007;
for(int i=1;i<=n;i++){
int j = i-1;
states[i][0] = 1+"";
states[i][1] = (Long.parseLong(states[j][0]) + Long.parseLong(states[j][1]) * 2)% mod+"";
states[i][2] = (Long.parseLong(states[j][0]) + Long.parseLong(states[j][2])) % mod+"";
states[i][3] = (Long.parseLong(states[j][1]) + Long.parseLong(states[j][3]) * 2) % mod+"";
states[i][4] = (Long.parseLong(states[j][1]) + Long.parseLong(states[j][2]) + Long.parseLong(states[j][4]) * 2) % mod+"";
states[i][5] = (Long.parseLong(states[j][3]) + Long.parseLong(states[j][4]) + Long.parseLong(states[j][5]) * 2) % mod+"";
}
System.out.println(states[n][5]);
}
}
网上找的资料都是C/C++的,自己用java写了一遍。运行正确,不过没有看懂。
java里面没有 long 型的数组,用String数组做的。
参考: http://blog.csdn.net/u013580497/article/details/48326879
http://www.cnblogs.com/Outer-Haven/p/4688752.html