zoukankan      html  css  js  c++  java
  • 【紫书】uva489 Hangman Judge 做了很久Orz

    题目链接:https://vjudge.net/problem/UVA-489

    题意:给出两行字符串,第一行是标准答案,第二行是玩家猜的串。玩家每次猜一个,猜对一个,标准答案中所有该字符都算被猜到。猜错的次数不能到达七次。多次因同一个字符猜错算猜错一次(这个条件没有用)。

      猜对,

           没猜对且错了七次,

           没猜对但还没错到七次

      分别输出

    You win.
    You lose.
    You chickened out.

    题解:模拟,莫名奇妙wa了一个小时。各种修改。

    以至于找到了一组数据,oj检测不出来,手算明显是错的:

    word
    aerbmzagword

    ac代码是You lose., 手算是You win.

    其实我错的是这一行:

    24 if (a[s2[i]]==1)a[s2[i]] = 0, num--;

    之前写成了 a[s2[i]] = -1
    这样的话如果下次再次出现之前已经猜到了的字符,会计算一次错误,然后gg(紫书写的“猜一个已经猜过的字母也算错”是错的,我敲了一遍书上的代码也是wa的)

    (坑)

    附ac代码:用了字符为下标的数组a[256]来简化,num来判断是否全部猜到,

     1 #include<string.h>
     2 #include<iostream>
     3 #include<string>
     4 
     5 using namespace std;
     6 
     7 int a[256];
     8 int main()
     9 {
    10     int n;
    11     int kase = 1;
    12     while (cin >> n) {
    13         if (n == -1)break;
    14         string s1, s2;
    15         cin >> s1 >> s2;
    16         memset(a, -1, sizeof(a));
    17         int len = s1.size(); int num = 0;
    18         for (int i = 0; i < len; i++)if (a[s1[i]]==-1) {
    19             a[s1[i]] = 1; num++;
    20         }
    21         int cnt = 0; int ok = 0;
    22         len = s2.size();
    23         for (int i = 0; i < len; i++) {
    24             if (a[s2[i]]==1)a[s2[i]] = 0, num--;
    25             //else cnt++;(替代下一行也ac)
    26             if (a[s2[i]] == -1)cnt++;
    27             if (cnt >= 7)break;
    28             if (num == 0) {
    29                  break;
    30             }
    31         }
    32         cout << "Round ";
    33         cout << n << endl;
    34         if (num==0)cout << "You win." << endl;
    35         else if (cnt >= 7)cout << "You lose." << endl;
    36         else cout << "You chickened out." << endl;
    37     }
    38 
    39     return 0;
    40 
    41 }
    成功的路并不拥挤,因为大部分人都在颓(笑)
  • 相关阅读:
    【转】性能测试分享---java vuser协议(2)---LoadRunner篇
    【转】性能测试分享---java协议(1)------jemter篇
    windows下怎么修改mysql密码
    linux下怎么修改mysql的字符集编码默认分类
    java使用Redis2--保存对象
    java使用Redis1--安装与简单使用
    java实现hash一致性算法
    Redis Sentinel初体验
    Redis持久化实践及灾难恢复模拟
    Redis学习笔记
  • 原文地址:https://www.cnblogs.com/SuuT/p/8510842.html
Copyright © 2011-2022 走看看