poj 1579 Function Run Fun

题目链接:http://poj.org/problem?id=1579

解题思路:简单dp

 1 ///////////////////////////////////////////////////////////////////////////
 2 //problem_id: poj 1579
 3 //user_id: SCNU20102200088
 4 ///////////////////////////////////////////////////////////////////////////
 5 
 6 #include <algorithm>
 7 #include <iostream>
 8 #include <iterator>
 9 #include <iomanip>
10 #include <cstring>
11 #include <cstdlib>
12 #include <string>
13 #include <vector>
14 #include <cstdio>
15 #include <cctype>
16 #include <cmath>
17 #include <queue>
18 #include <stack>
19 #include <list>
20 #include <set>
21 #include <map>
22 using namespace std;
23 
24 ///////////////////////////////////////////////////////////////////////////
25 typedef long long LL;
26 const double PI=acos(-1.0);
27 ///////////////////////////////////////////////////////////////////////////
28 
29 ///////////////////////////////////////////////////////////////////////////
30 //Add Code:
31 ///////////////////////////////////////////////////////////////////////////
32 
33 int main(){
34     ///////////////////////////////////////////////////////////////////////
35     //Add code:
36     int i,j,k,w[25][25][25];
37     for(i=0;i<=20;i++){
38         for(j=0;j<=20;j++){
39             for(k=0;k<=20;k++){
40                 if(i==0 || j==0 || k==0) w[i][j][k]=1;
41                 else if(i<j && j<k) w[i][j][k]=w[i][j][k-1]+w[i][j-1][k-1]-w[i][j-1][k];
42                 else w[i][j][k]=w[i-1][j][k]+w[i-1][j-1][k]+w[i-1][j][k-1]-w[i-1][j-1][k-1];
43             }
44         }
45     }
46     while(scanf("%d%d%d",&i,&j,&k)!=EOF){
47         if(i==-1 && j==-1 && k==-1) break;
48         printf("w(%d, %d, %d) = ",i,j,k);
49         if(i<=0 || j<=0 || k<=0) printf("%d\n",1);
50         else if(i>20 || j>20 || k>20) printf("%d\n",w[20][20][20]);
51         else printf("%d\n",w[i][j][k]);
52     }
53     ///////////////////////////////////////////////////////////////////////
54     return 0;
55 }
56 
57 ///////////////////////////////////////////////////////////////////////////
58 /*
59 Testcase:
60 Input:
61 1 1 1
62 2 2 2
63 10 4 6
64 50 50 50
65 -1 7 18
66 -1 -1 -1
67 Output:
68 w(1, 1, 1) = 2
69 w(2, 2, 2) = 4
70 w(10, 4, 6) = 523
71 w(50, 50, 50) = 1048576
72 w(-1, 7, 18) = 1
73 */
74 ///////////////////////////////////////////////////////////////////////////

posted on 2013-08-19 10:06  SCNU20102200088  阅读(113)  评论(0编辑  收藏  举报

导航