zoukankan      html  css  js  c++  java
  • 找水王

    1.设计思路

    a) 出发点“水王的发帖数目超过了帖子数目的一半”,所以水王的名字至少会重复N/2,设定一个数num来记录一个发帖人名称的重复次数,num初始化为0;定义一个string shuiWang 来记住水王的名称。

    b) 当一个名称与后一个名称相同时,num++;不相同时,num--;num0时,将下一个名称赋值给shuiWang

    2.代码实现

    //陈昌  20143051 
    //2016/5/16 课堂练习-找水王
    //水王是有一半发帖数目的人,所以水王的num永远不会小于一
    #include<iostream>
    #include<string>
    using namespace std;
    void main()
    {
    	int shuiNum;
    	cout<<"请输入帖子的数目:";
    	cin>>shuiNum;
    	//动态创建水贴数目的数组,用于存储每个帖子的发帖人
    	string *shui = new string[shuiNum];
    	//string shui;
    	cout<<"请输入每个帖子的发帖人姓名:"<<endl;
    	for(int i=0;i<shuiNum;i++)
    	{
    		cout<<i+1<<": ";
    		cin>>shui[i];
    	}
    	int num=0;           //重复的次数
    	string shuiWang=shui[0];  //假定水王是第一个人
    	for(int i=0;i<shuiNum-1;i++)
    	{
    		if(shui[i]==shui[i+1])
    			num++;
    		else
    		{
    			if(num==0)  //当num=0时,换人
    				shuiWang=shui[i+1];
    			else 
    				num--;
    		}
    	}
    	cout<<"水王是:"<<shuiWang<<endl;
    }
    

      

    3.结果截图

    1.

    2.

     

    3.

     

    4.个人总结

    本次课堂练习本没有在课堂上解决,甚至在课堂上都没有实际的解决思路。最后的设计思路还是在网上找到的,人家想的真的很好。

    就这道题而言,重点在于“水王的发帖数目超过了帖子数目的一半”,总数目的一半N/2

    超过了一半就是>N/2,知道重点在哪里,却不会具体的解题思路,自己的“水”不够深。。要多学习一些好的设计思路,多上网查找资料

  • 相关阅读:
    建造者模式的使用场景
    由于losf引起的pxc启动报错处理
    mysql5.6源码自动安装脚本
    mysql5.7.16二进制安装
    Maven入门
    数据链路层
    图-拓扑排序
    线性表-队列
    线性表-链表
    Java基本概念(未完)
  • 原文地址:https://www.cnblogs.com/cchjl/p/5513053.html
Copyright © 2011-2022 走看看