zoukankan      html  css  js  c++  java
  • 简单题(需要注意一个细节) 之 hdu 4847 Wow! Such Doge!

    //  [7/25/2014 Sjm]
    /*
    好几次 Runtime Error(ACCESS_VIOLATION)。。。后来发现:
    当有符号数和无符号数出现在同一个表达式中,默认状态下(不做强制类型转换)表达式的值为将结果转化为无符号类型的值。
    eg:
    int as = 4;
    string str = "abc";
    cout << str.size() << endl; // 输出值为 3
    cout << str.size() - as << endl;  // 输出值非 -1
    */
     1 // 法一:
     2 #include <iostream>
     3 #include <cstdlib>
     4 #include <cstdio>
     5 #include <string>
     6 using namespace std;
     7 string str, t_str;
     8 string arr_str[17] =
     9 { "doge",
    10 "Doge", "dOge", "doGe", "dogE",
    11 "DOge", "DoGe", "DogE", "dOGe", "dOgE", "doGE",
    12 "DOGe", "DOgE", "DoGE", "dOGE",
    13 "DOGE"
    14 };
    15 
    16 void myGet(int pos) {
    17     int lim = pos + 4;
    18     t_str = "";
    19     for (int i = pos; i < lim; ++i) {
    20         t_str += str[i];
    21     }
    22 }
    23 
    24 int main()
    25 {
    26     //freopen("input.txt", "r", stdin);
    27     int ans = 0;
    28     while (getline(cin, str)) {
    29         if (str.size() < 4) continue;
    30         // 加上此判断,防止Runtime Error,或者计算 (str.size() - 4) 时强制类型转换,即:(int)(str.size()) - 4
    31         for (int i = 0; i <= (str.size() - 4); ++i) {
    32             myGet(i);
    33             for (int j = 0; j < 17; ++j) {
    34                 if (t_str == arr_str[j]) {
    35                     ans++;
    36                     break;
    37                 }
    38             }
    39         }
    40     }
    41     printf("%d
    ", ans);
    42     return 0;
    43 }
     1 // 法二:
     2 #include <iostream>
     3 #include <cstdlib>
     4 #include <cstdio>
     5 #include <string>
     6 using namespace std;
     7 string str, t_str;
     8 
     9 int main()
    10 {
    11     //freopen("input.txt", "r", stdin);
    12     int ans = 0;
    13     while (getline(cin, str)) {
    14         if (str.size() < 4) continue;
    15         for (int i = 0; i <= (str.size() - 4); ++i) {
    16             if (
    17                 (str[i] == 'D' || str[i] == 'd') &&
    18                 (str[i + 1] == 'O' || str[i + 1] == 'o') &&
    19                 (str[i + 2] == 'G' || str[i + 2] == 'g') &&
    20                 (str[i + 3] == 'E' || str[i + 3] == 'e')) {
    21                 ans++;
    22             }
    23         }
    24     }
    25     printf("%d
    ", ans);
    26     return 0;
    27 }
  • 相关阅读:
    台州 OJ 3847 Mowing the Lawn 线性DP 单调队列
    洛谷 OJ P1417 烹调方案 01背包
    快速幂取模
    台州 OJ 2649 More is better 并查集
    UVa 1640
    UVa 11971
    UVa 10900
    UVa 11346
    UVa 10288
    UVa 1639
  • 原文地址:https://www.cnblogs.com/shijianming/p/4140816.html
Copyright © 2011-2022 走看看