主持人的烦恼

主持人的烦恼

http://www.nowcoder.com/questionTerminal/9153dbbaf9674d1fb72b6fbb10c371d0

算法知识点:多组输入、排序、贪心算法

解题思路

首先将所有人的颜值从小到大排序,如果a【1】和a【2】不能组队,那么a【1】肯定和a【3】不能组队。所以第一个人没有必要去找后边的人去组队,因为假设第一个人和第三个人组了队,兴许之后的第四个人就再没有组队的机会了。所以我们直接按照相邻的两个人组队去做即可。
1.实现多组输入 while(cin>>n>>m)
2.在while循环中嵌套for循环n次,依次获取n个学生的颜值,存入数组a[]
3.数组a从小到大排序
4.贪心算法:依次比较相邻两元素之差,如果可组队,数组下标j前进2,组队数+1,否则数组下标j前进1
5.输出组队数
注:多组输入的n、m不同,所以数组a[]的有效长度存在变化,因此将数组a的声明和组对数count的声明及初始化放在while循环中

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
    int n,m;//n表示人数,m表示颜值差上限
    while(cin>>n>>m)
    {
        int a[n];//存放每个学生的颜值
        int count=0;//表示组队数,初始为0
        //依次获取每个人的颜值
        for (int i = 0; i < n; ++i)
        {
            cin>>a[i];
        }
        //排序
        sort(a,a+n);
        //贪心算法
        for (int j = 0; j < n-1; )
        {
            if(a[j+1]-a[j]<m)//组队成功
            {
                j+=2;
                count++;
            }
            else//组队失败
            {
                j++;
            }

        }
        //输出组队数
        cout<<count<<endl;
    }
    return 0;
}
全部评论

相关推荐

宝宝,你只是华为鱼池里的一条鱼,一滴泪落入大海没有人会看见。➡️4.5投递简历➡️5.15-5.31完成所有面试,并显示通过入池➡️6月初我同步收到其他公司暑期实习offer,但由于当时1️⃣对华为的爱国滤镜+2️⃣当时不知道华为臭名昭著的泡池子体系,且3️⃣问了对接HR是否面试全通过就能往后推进流程,HR的回复是肯定的,且保证有最新消息会及时通知。➡️所以不想耽误其他公司招聘进度,就把目前手上offer全拒了,等华为这边推进度。直到目前为止,再没收到过任何保温、甚至来自HR提醒(没有我也认了,没义务主动提醒我),但是最生气的是我主动和HR连发三次消息连敷衍都没有,但同天有朋友是同一个HR对接,问消息ta又都有回复。最后只有我傻傻地我守着一张空头支票,结果开票的人压根就没当一回事。PS:今天要了另一个Hr电话致电问询,说话帮我查下什么情况,但下午打过去电话直接被挂了,至此我已我能做的所有事情,反正也只能如此,以这个帖子记录和结束🔚现在已经不奢望被捞了,只是没想到自己为暑期实习忙活整整两个月得到的是这么个结果,刚好最近在听《平凡的世界》,应景极了。能怎么办呢,收拾心情,接着忙开题答辩和再找实习吧。起码不是秋招中被耍,就当吃一堑长一智吧#实习吐槽# #暑期实习# #踩雷# #华为# #菊厂# #小丑竟是我自己#
点赞 评论 收藏
分享
14 收藏 评论
分享
牛客网
牛客企业服务