题意:求一个4面体从一个顶点出发经过n步到达原点的路线数
解题思路: 简单dp
解题代码:

1 // File Name: 166e.cpp 2 // Author: darkdream 3 // Created Time: 2014年07月24日 星期四 10时12分28秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<stack> 11 #include<bitset> 12 #include<algorithm> 13 #include<functional> 14 #include<numeric> 15 #include<utility> 16 #include<sstream> 17 #include<iostream> 18 #include<iomanip> 19 #include<cstdio> 20 #include<cmath> 21 #include<cstdlib> 22 #include<cstring> 23 #include<ctime> 24 #define LL long long 25 using namespace std; 26 int a[10000002][4]; 27 #define M 1000000007 28 int main(){ 29 int n; 30 scanf("%d",&n); 31 a[0][3] = 1; 32 LL t = 1; 33 for(int i =1;i <= n;i ++) 34 { 35 LL k = 0 ; 36 for(int j = 0 ;j <= 3;j ++ ) 37 { 38 a[i][j] = (t-a[i-1][j]) % M; 39 k += a[i][j]; 40 } 41 t = k ; 42 } 43 printf("%d ",a[n][3]); 44 return 0; 45 }