有点懵逼
查看原帖
有点懵逼
1165831
zuilp楼主2023/12/27 19:38

本来以为这题会出现重复数据的,就再块排完之后数清重复数据再输出 代码如下


#include<stdio.h>
void kp(int* arr,int a,int b)
{
	if(b<=a)
	return ;
   	int key=arr[(a+b)/2],i=a,big=b;
   	arr[(a+b)/2]=arr[a];
while(a<b)
{
	while(arr[b]>key&&a<b)
		b--;
		if(a<b)
		arr[a]=arr[b];
	while(arr[a]<=key&&a<b)
        a++;
        if(a<b)
        arr[b]=arr[a];
}
arr[a]=key;
kp(arr,i,a-1);
kp(arr,a+1,big);
}
int main()
{
	int n,n1,k;
	scanf("%d %d",&n,&k);
	int i;
	int arr[n];
	for(i=0;i<n;i++)
	scanf("%d",&arr[i]);
	kp(arr,0,n-1);
		for(i=0;i<n;i++)
	{
		if(k==0)
{
printf("%d",arr[i]);
break;
}
		if(k!=0&&arr[i]!=arr[i+1])
        k--;
	}
	return 0;
}


全报错了,结果一看题解。没人考虑重复的问题,于是我就直接快排完输出arr[k];然后。。。。。就过了。这题也没给测试点。有没有大佬告诉我第一个代码哪里出问题了

2023/12/27 19:38
加载中...