• 【HDOJ】1508 Alphacode


    简单DP。考虑10、20(出现0只能唯一组合)。01(不成立)。

     1 /* 1508 */
     2 #include <iostream>
     3 #include <string>
     4 #include <map>
     5 #include <queue>
     6 #include <set>
     7 #include <stack>
     8 #include <vector>
     9 #include <deque>
    10 #include <algorithm>
    11 #include <cstdio>
    12 #include <cmath>
    13 #include <ctime>
    14 #include <cstring>
    15 #include <climits>
    16 #include <cctype>
    17 #include <cassert>
    18 #include <functional>
    19 #include <iterator>
    20 #include <iomanip>
    21 using namespace std;
    22 //#pragma comment(linker,"/STACK:102400000,1024000")
    23 
    24 #define sti                set<int>
    25 #define stpii            set<pair<int, int> >
    26 #define mpii            map<int,int>
    27 #define vi                vector<int>
    28 #define pii                pair<int,int>
    29 #define vpii            vector<pair<int,int> >
    30 #define rep(i, a, n)     for (int i=a;i<n;++i)
    31 #define per(i, a, n)     for (int i=n-1;i>=a;--i)
    32 #define clr                clear
    33 #define pb                 push_back
    34 #define mp                 make_pair
    35 #define fir                first
    36 #define sec                second
    37 #define all(x)             (x).begin(),(x).end()
    38 #define SZ(x)             ((int)(x).size())
    39 #define lson            l, mid, rt<<1
    40 #define rson            mid+1, r, rt<<1|1
    41 
    42 const int maxn = 1e5+5;
    43 char s[maxn];
    44 __int64 dp[maxn];
    45 
    46 int main() {
    47     ios::sync_with_stdio(false);
    48     #ifndef ONLINE_JUDGE
    49         freopen("data.in", "r", stdin);
    50         freopen("data.out", "w", stdout);
    51     #endif
    52     
    53     int len;
    54     __int64 ans;
    55     
    56     while (scanf("%s", s+1)!=EOF && s[1]!='0') {
    57         len = strlen(s+1);
    58         rep(i, 1, len+1)    s[i] -= '0';
    59         
    60         dp[0] = 1;
    61         rep(i, 1, len+1) {
    62             if (s[i] == 0) {
    63                 dp[i] = dp[i-2];
    64             } else if (i>1 && s[i-1]>0 && 10*s[i-1]+s[i]<=26) {
    65                 dp[i] = dp[i-1] + dp[i-2];
    66             } else {
    67                 dp[i] = dp[i-1];
    68             }
    69         }
    70         
    71         ans = dp[len];
    72         printf("%I64d
    ", ans);
    73     }
    74     
    75     #ifndef ONLINE_JUDGE
    76         printf("time = %d.
    ", (int)clock());
    77     #endif
    78     
    79     return 0;
    80 }
  • 相关阅读:
    JAVA软件开发职责
    Redis主从复制配置
    VirtualBox安装Ubuntu教程
    分段锁——ConcurrentHashMap
    阻塞队列BlockingQueue用法
    阻塞队列--LinkedBlockingQueue
    MySQL百万级数据库优化方案
    获取主机的对外ip
    联通沃云开启80端口
    Nginx 正则匹配
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4926235.html
Copyright © 2020-2023  润新知