zoukankan      html  css  js  c++  java
  • PTA 乙级 1069 微博转发抽奖 (20分) C++

    刚开始没用map,想利用数组容器存储获过奖的昵称,关于如何判断是否已经获过奖,直接用的遍历的方法,跟数组的每一个元素进行比较(很繁琐,也很费时) 

    原本的想法,测试点3怎么也无法通过(测试点3:顺延之后要从该获奖序号开始取下一个间隔为N的序号为中奖号。

    后来看了看别人的代码,用一个map来存储每一个昵称获奖次数即可

    原本的代码:

     1 #include<iostream>
     2 #include<vector>
     3 
     4 using namespace std;
     5 
     6 int main() {
     7     int m = 0, n = 0, s = 0;
     8     cin >> m >> n >> s;
     9     if (s > m) { cout << "Keep going..."; return 0; }
    10     vector<string> win(m + 1);
    11     int j = 0;
    12     int flag = 0;
    13     for (int i = 1; i <= m; ++i) {
    14         string tmp;
    15         cin >> tmp;
    16         if (flag) {
    17             win[j] = tmp;
    18             j++;
    19             flag = 0;
    20         }
    21         if (i == s) {
    22             for (int k = 0; k <= j; ++k) {
    23                 if (win[k] == tmp)
    24                     flag = 1;
    25             }
    26             if (flag) { s++; continue; }
    27             win[j] = tmp;
    28             j++;
    29             s += n;
    30         }
    31      }
    32     for (int i = 0; i < j; ++i) cout << win[i] << endl;
    33     return 0;
    34 }

    真是令人崩溃

    改进后的:

     1 #include<iostream>
     2 #include<map>
     3 
     4 using namespace std;
     5 
     6 int main() {
     7     int m = 0, n = 0, s = 0;
     8     cin >> m >> n >> s;
     9     if (s > m) { cout << "Keep going..."; return 0; }        //没有人中奖
    10     map<string, int> gain;                                    //以每个人的昵称为键,判断是否中过奖
    11     for (int i = 1; i <= m; ++i) {
    12         string tmp;
    13         cin >> tmp;
    14         if (gain[tmp] == 1) s++;                            //此人中过奖,之后依次顺延
    15         if (i == s && gain[tmp] == 0) {                        
    16             gain[tmp] = 1;                                    //标记此昵称已中过奖
    17             cout << tmp << endl;
    18             s += n;
    19         }
    20      }
    21     return 0;
    22 }

  • 相关阅读:
    安装LVS安装LVS和配置LVS的工作比较繁杂
    移动web开发研究
    10个顶级的CSS UI开源框架
    Jquery使用tbody编辑功能实现table输入计算功能
    【开源】Hawk-数据抓取工具:简明教程
    55个最实用大数据可视化分析工具
    Apache本地服务无法自启动问题解决
    网站10大致命SEO错误
    企业管理:名片的重要性
    开发人员应该知道的SEO
  • 原文地址:https://www.cnblogs.com/SCP-514/p/13631947.html
Copyright © 2011-2022 走看看