• 找水王


    题目:
    三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
    如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
    思路:
    根据题目可以得到如下信息:
    1.水王会回复每个ID的发的帖子
    2.水王发帖数超过了论坛帖子数目的一半
    根据这两点,我认为可以通过查找每个ID的回帖ID号,找到水王(因为水王会回复其他ID发的每个帖子,所以通过查询各个ID的回帖ID,则查询多少个ID,必有多少个重复的ID,即水王),但这种方法查询较为繁琐。
    通过别人的讲解,得到另一种思路:
    消消乐游戏的原理
    定义初始化变量n和m,用m来表示ID,每当m与当前ID不相同时,n就减1;反之就加1;当n小于0时更新m为当前ID。
    代码如下:
     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 #define N 5
     5 
     6 void main()
     7 {
     8     int n = 0;
     9     string a[N], m;
    10     cout << "输入ID:" ;
    11     for (int i = 0; i < N; i++)
    12     {
    13         cin >> a[i];
    14     }
    15 
    16     m = a[0];
    17 
    18     for (int i = 0; i < N; i++)
    19     {
    20         if (m == a[i])
    21         {
    22             n += 1;
    23         }
    24         else
    25             n -= 1;
    26         if (n < 0)
    27         {
    28             m = a[i];
    29         }
    30     }
    31     cout << "水王是:" << m << endl;
    32 }

    总结:一个好的思路是实现代码最重要的基石,不能局限于一种方法,多想,多问。只有集思广益才能锻炼大脑。

  • 相关阅读:
    lambda表达式
    PAT 1071. Speech Patterns
    PAT 1070. Mooncake
    1069. The Black Hole of Numbers
    PAT 1068. Find More Coins
    背包问题(动态规划)
    PAT 1067. Sort with Swap(0,*)
    PAT 1066. Root of AVL Tree
    PAT 1065. A+B and C
    PAT 1064. Complete Binary Search Tree
  • 原文地址:https://www.cnblogs.com/SanShaoS/p/4515836.html
Copyright © 2020-2023  润新知