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,知道重点在哪里,却不会具体的解题思路,自己的“水”不够深。。要多学习一些好的设计思路,多上网查找资料

  • 相关阅读:
    SQLDirect 6.5 Source (Delphi 5-10.1 Berlin)
    中国自主X86处理器工艺跃进:国产28nm升级16nm(上海兆芯)
    底层库
    An Overview of Complex Event Processing2
    linux动态库编译和使用
    gulp
    Web前端性能优化
    ECLIPSE JSP TOMCAT 环境搭建
    项目架构mvc+webapi
    HTTP/1.1
  • 原文地址:https://www.cnblogs.com/cchjl/p/5513053.html
Copyright © 2011-2022 走看看