课堂测试-找水王

题目:已知帖子数量和ID号,水王的发帖数超过帖子数的一半,要求快速找出水王

设计思想:快速找出就要求算法必须时间复杂度小,本题利用相同则保留不同则消除的思想,快速找出帖子数最多的水王

代码:

#include<iostream>
using namespace std;
#define N 100
int main()
{
    int ID[N];//发帖者ID
    int i,count=0,sw,a;//计数变量,相同次数,水王,帖子的数量
    cout << "**************一起来找水王****************" << endl;
    cout << "输入帖子的数量" << endl;
    cin >> a;
    if (a <= 0)
    {
        cout << "输入的帖子数量不正确,请重新输入" << endl;
        cin >> a;
        while (a < 0)
        {
            cout << "输入的帖子数量不正确,请重新输入" << endl;
            cin >> a;
        }
    }
    cout << "输入发帖者id号:" << endl;
    for (i = 0; i<a; i++)
    {
        cin >> ID[i];
    }
    for (i = 0; i<a; i++)//遍历a次
    {
        if (count == 0)
        {
            sw = ID[i];
            count = 1;
        }
        else
        {
            if (sw == ID[i])//相同则计数加1,不同则减一
            {
                count++;
            }
            else
                count--;
        }
    }
    cout << "水王的id是:" << sw << endl;
    return 0;
}

 

测试结果:
===== ===== ===== ===== =====
Compiling...
Compiling done.
===== ===== ===== ===== =====
Doing Unit Test Case 01

输入帖子数量:

显示:输入的帖子数量不正确
Done: 01.
===== ===== ===== ===== =====
Doing Unit Test Case 02
输入帖子数量:
10
输入发帖者ID号:
11 23 32 54 23 11 11 11 11 11
水王的ID是:11
Done: 02.

ALL DONE.
===== ===== ===== ===== =====

总结:这次程序实现并不难,但要寻求最快,必须要选取更好的算法,通过这次测试,感觉自己视野打开了,要根据不同问题,自己设计选取最合适的算法。

开发日志:

星期听课上网读书编程总计
周一21 14
周二     
周三 1  1
周四2 1 3
周五   22

时间记录日志:

日期开始时间结束时间休息时间工作时间活动内容
5/1719:0021:1010120查资料
5/1814:0015:1010120看书
5/1914:0017:3030180编程
5/2014:2016:200120编程 写博客

 

缺陷记录日志:

这次程序思想很重要,一开始自己想的是遍历,后来在老师的提醒下,才明白了更好的算法。

转载于:https://www.cnblogs.com/lvstudy/p/5513714.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值