关注
楼主想的有点复杂了。我来说一说我的思路。AC了的。
第一步先 排序。这个大家都能想到。
第二步,三个为一组。首先看前三个 a1,a2,a3.
FIRST 如果a2-a1<=10&&a3-a2<=10
则符合要求,就从第4个开始,a4,a5,a6为一组。。。
SECOND 如果 a2-a1>10 && a2-a1<=20 则
数量+1,跳到第3个,a3,a,4,a5为一组。。。
THIRD 如果 a2-a1>20 则数量 +2;跳到第2 个,a2,a3,a4,为下一组。。
FOURTH 如果 a2-a1<=10,a3-a2>10,则数量+1,跳到第3个,a3,a4,a5为下一组。。。。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
vector<int> ivec;
for(int i=0;i!=n;++i)
{
int temp;
cin>>temp;
ivec.push_back(temp);
}
sort(ivec.begin(),ivec.end());
int sz=ivec.size();
int count=0;
int zou;
for(zou=0;zou+2<sz;)
{
if(zou+2<sz)
{
if(ivec[zou+1]-ivec[zou]>10&&ivec[zou+1]-ivec[zou]<=20)
{count+=1;
zou+=2;
continue;
}
if(ivec[zou+1]-ivec[zou]>20)
{
count+=2;
++zou;
continue;
}
if(ivec[zou+1]-ivec[zou]<=10&&ivec[zou+2]-ivec[zou+1]>10)
{
++count;
zou+=2;
continue;
}
zou+=3;
}
}
if(sz-zou==2)
{
if(ivec[zou+1]-ivec[zou]<=10)
{
count+=1;
cout<<count<<endl;
break;
}
if(ivec[zou+1]-ivec[zou]>10&&ivec[zou+1]-ivec[zou]<=20)
{
count+=1;
cout<<count<<endl;
break;
}
if(ivec[zou+1]-ivec[zou]>20)
{
count+=4;
cout<<count<<endl;
break;
}
}
if(sz-zou==1)
{
count+=2;
}
cout<<count<<endl;
}
}
查看原帖
点赞 5
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客新年AI问运 #
7554次浏览 113人参与
# 你喜欢工作还是上学 #
89309次浏览 883人参与
# 牛客AI体验站 #
16490次浏览 288人参与
# 你找工作的时候用AI吗? #
173231次浏览 888人参与
# 被AI治愈的瞬间 #
90549次浏览 685人参与
# 有必要和同事成为好朋友吗? #
1187次浏览 23人参与
# 听劝,这个公司值得去吗 #
665287次浏览 1996人参与
# 为了秋招你都做了哪些准备? #
32587次浏览 534人参与
# 这个工作能去吗 #
115047次浏览 662人参与
# 多益网络工作体验 #
63242次浏览 306人参与
# 秋招吐槽大会 #
304571次浏览 1524人参与
# 你觉得什么岗位会被AI替代 #
41068次浏览 275人参与
# 工作中的卑微时刻 #
33500次浏览 199人参与
# 数字马力求职进展汇总 #
331640次浏览 2381人参与
# 非技术岗薪资爆料 #
490437次浏览 3041人参与
# 我们是不是被“优绩主义”绑架了? #
32835次浏览 487人参与
# 产品面经 #
261209次浏览 2173人参与
# 面试中的破防瞬间 #
1190549次浏览 11028人参与
# 如何提高实习转正率? #
86713次浏览 505人参与
# 卷__卷不过你们,只能卷__了 #
41690次浏览 665人参与
查看3道真题和解析