关注
楼主想的有点复杂了。我来说一说我的思路。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
相关推荐
牛客热帖
更多
正在热议
更多
# 26届春招投递记录 #
30149次浏览 218人参与
# 妈妈治愈了你哪些脆皮时刻 #
47032次浏览 351人参与
# 27届实习投递记录 #
109796次浏览 1082人参与
# 我的工作日记 #
207345次浏览 1821人参与
# 我的求职总结 #
509544次浏览 7058人参与
# 大学生该如何认清当下的就业环境? #
178252次浏览 939人参与
# 要毕业了,再不说就来不及了 #
4656次浏览 86人参与
# AI面会问哪些问题? #
132768次浏览 3311人参与
# 25届非技术实习投递记录 #
159190次浏览 1027人参与
# 我与AI的日常 #
10106次浏览 151人参与
# 如果公司降薪,你会跳槽吗? #
168526次浏览 968人参与
# 你的秋招进行到哪一步了 #
2801698次浏览 23414人参与
# 你觉得什么岗位会被AI替代 #
65173次浏览 386人参与
# 腾讯工作体验 #
645817次浏览 3911人参与
# 怎么给家人解释你的工作? #
60369次浏览 224人参与
# 摸鱼被leader发现了怎么办 #
207050次浏览 937人参与
# 滴!实习打卡 #
860677次浏览 6900人参与
# 牛友的志愿填报指南 #
72195次浏览 503人参与
# 材料专业就业可以去哪些企业岗位 #
69081次浏览 396人参与
# 你遇到过哪些神仙同事 #
147250次浏览 778人参与
神州信息成长空间 151人发布