http://ac.jobdu.com/problem.php?id=1394
写代码前先提醒自己牢记师姐的话~
好像九度上没考虑某个数字重复的情况
如果不考虑那种,那么,先排序,然后每个数字依次找,在长度范围内,如果有小于num+4的,需要添加的数字便少一个,然后找出所有数字中,这个值最小的
1 #include <stdio.h>
2 #include <algorithm>
3 using namespace std;
4 int N;
5 int num[1005];
6 bool check(int i,int j)
7 {
8 if(i+j<N&&j<5&&num[i+j]<=num[i]+4)
9 return true;
10 return false;
11 }
12 int main()
13 {
14 while(scanf("%d",&N)!=EOF){
15 int i;
16 int max_in=0;
17 for(i=0;i<N;i++){
18 scanf("%d",&num[i]);
19 }
20 sort(num,num+N);
21 int in_=0;
22 for(i=0;i<N;i++){
23 in_=0;
24 int j;
25 for(j=1;j<=4;j++){
26 if(check(i,j))
27 in_++;
28 }
29 in_++;
30 if(in_>max_in)
31 max_in=in_;
32 }
33 printf("%d\n",5-max_in);
34 }
35 }