• 简单题(需要注意一个细节) 之 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 }
  • 相关阅读:
    委托和事件
    解决kalilinux:“下列签名无效: KEYEXPIRED 1425567400"
    【c# 学习笔记】委托的使用
    【c# 学习笔记】c#委托是什么
    【c# 学习笔记】面向对象编程的应用
    【c# 学习笔记】接口与抽象类
    【C# 开发技巧】番外篇故事-我是一个线程
    【物联网硬件安全】二、固件分析-固件逆向
    【物联网硬件安全】二、固件分析-固件提取
    【物联网硬件安全】一、硬件分析-电路分析
  • 原文地址:https://www.cnblogs.com/shijianming/p/4140816.html
Copyright © 2020-2023  润新知