首页 > 代码库 > 【HDOJ】4972 A simple dynamic programming problem

【HDOJ】4972 A simple dynamic programming problem

水题。

 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4  5 int abs(int x) { 6     return x<0 ? -x:x; 7 } 8  9 int main() {10     int t, n;11     int cur, past;12     __int64 ans;13     bool flag;14     15     #ifndef ONLINE_JUDGE16         freopen("data.in", "r", stdin);17     #endif18     19     scanf("%d", &t);20     for (int i=1; i<=t; ++i) {21         scanf("%d", &n);22         flag = true;23         past = 0;24         ans = 1;25         while (n--) {26             scanf("%d", &cur);27             if (!flag)28                 continue;29             if (abs(cur-past)>3 || (cur==past && cur!=1)) {30                 flag = false;31                 continue;32             }33             if (past == 0)34                 ans *= 2;35             if (cur == 0)36                 ans /= 2;37             if ((cur==1 && past==2) || (cur==2 && past==1))38                 ans += 2;39             past = cur;40         }41         if (!flag)42             printf("Case #%d: 0\n", i);43         else44             printf("Case #%d: %I64d\n", i, ans);45     }46 47     return 0;48 }

 

【HDOJ】4972 A simple dynamic programming problem