问题标题: 酷町堂:5167 最值之差

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼

题目传送门

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int a[10005],n,d,k,min=99999,max=-1;
	cin>>n>>d;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(max<a[i]){
			max=a[i];
		}
		if(min>a[i]){
			min=a[i];
		}
	}
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(a[i]-a[j]<=d){
				if(max>a[i] || a[j]<min){
					cout<<n-(j-i+1);
					break;
				}
			}
		}
	}
	return 0;
}

1、找错

2、思路

陈曦在2020-07-15 20:03:30追加了内容

顶顶顶

 

@各位,思路能给点吗?

陈曦在2020-07-16 11:54:34追加了内容

@侯平仄 

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int a[10005],n,d,k,min=99999,max=-1;
	cin>>n>>d;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(a[j]-a[i]<=d){
				cout<<n-(j-i+1);
				return 0;
			}
		}
	}
	return 0;
}

还是不对。


1
已采纳
侯平仄
侯平仄
新手天翼
新手天翼

aj-ai

不是ai-aj

1
李瑞曦
李瑞曦
高级天翼
高级天翼

额,看不懂你的代码,发一下我的核心吧

for(int j=1;j<=n;j++)
        {
            if(a[j]<a[i]||a[j]>a[i]+d)
            cnt++;
        }

 

1
李鑫羽
李鑫羽
初级光能
初级光能

核心代码

for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a+1,a+1+n);
    int j=1;
    for(int i=1;i<=n;i++){
    while(j<=n&&a[j]-a[i]<=k)
        j++;
        ans=min(ans,n-(j-i));
    }    
    cout<<ans;

李鑫羽在2020-07-15 16:14:47追加了内容

发错了,发成了核心代码,别举报

李鑫羽在2020-07-15 16:38:10追加了内容

我已看不懂

李鑫羽在2020-07-16 14:04:45追加了内容

不过核心代码是对的

1
柯以成
柯以成
新手光能
新手光能

核心

for(int i=1;i<=n;i++){ //将每 个数作为最小值分别试验
int t=a[i]+d;
for(int j=1;j<=n;j++){ // 如果数字在a[i]~a[i]+d范围之外,则需要被删除
if(a[j]<a[i]||a[j]>a[i]+d) cnt++;
}
ans=min( ans,cnt);
cnt=0;
}

 

0
0
0
0
0
侯平仄
侯平仄
新手天翼
新手天翼

for(int j=1;j<=n;j++){


改成

 

for(int j=1+i;j<=n;j++){


 

我要回答