• 【HDOJ】4403 A very hard Aoshu problem


    HASH+暴力。

     1 /* 4403 */
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <cstdlib>
     6 #include <map>
     7 using namespace std;
     8 
     9 #define MAXN 55
    10 
    11 map<int, int> tb[2];
    12 char s[MAXN];
    13 
    14 int get(int b, int e) {
    15     int ret = 0;
    16 
    17     for (int i=b; i<e; ++i)
    18         ret = 10*ret + s[i] - '0';
    19 
    20     return ret;
    21 }
    22 
    23 void myfill(int b, int e, int v, int in) {
    24     int tmp = 0;
    25 
    26     if (b == e)
    27         tb[in][v]++;
    28 
    29     for (int i=b; i<e; ++i) {
    30         tmp = 10 * tmp + s[i] - '0';
    31         myfill(i+1, e, v+tmp, in);
    32     }
    33 }
    34 
    35 int main() {
    36     int len;
    37     int i, j, k, tmp;
    38     int x, y;
    39     int ans;
    40 
    41     #ifndef ONLINE_JUDGE
    42         freopen("data.in", "r", stdin);
    43     #endif
    44 
    45     while (scanf("%s", s)!=EOF && s[0]!='E') {
    46         len = strlen(s);
    47         ans = 0;
    48         for (i=1; i<len; ++i) {
    49             tb[0].clear();
    50             tb[1].clear();
    51             myfill(0, i, 0, 0);
    52             myfill(i, len, 0, 1);
    53             for (map<int, int>::iterator iter=tb[0].begin(); iter!=tb[0].end(); iter++)
    54                 ans += iter->second * tb[1][iter->first];
    55         }
    56         printf("%d
    ", ans);
    57     }
    58 
    59     return 0;
    60 }
  • 相关阅读:
    leetcode122
    leetcode121
    leetcode773
    leetcode803
    leetcode658
    leetcode723
    leetcode134
    leetcode340
    leetcode721
    leetcode362
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4198096.html
Copyright © 2020-2023  润新知