社区讨论

求助大佬Orz

P1923【深基9.例4】求第 k 小的数参与者 4已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lobwcc6o
此快照首次捕获于
2023/10/30 04:01
2 年前
此快照最后确认于
2023/11/04 09:05
2 年前
查看原帖
今天在做此题的时候,递归函数部分出现了这个报错
CPP
[Error] too few arguments to function 'void findk(int, int, int)'
翻译: [错误]函数“void findk(int,int,int)”的参数太少
请问这是怎么回事,为什么会出现这种参数 感谢大佬Orz
(附代码)
CPP
#include <bits/stdc++.h>
#define maxn 50000000

using namespace std;

int a[maxn]={0}, ans=0, k;

void findkth ( int l, int r,)
{
	if (l==r)
	{
		ans=a[l];
		return ;
	}
	int i=1, j=i, flag=a[(l+r)/2], tmp;
	do
	{
		while (a[i]<flag) i++;
		while (a[j]>flag) j--;
		if (i<=j)
		{
			tmp=a[i]; 
        		a[i]=a[j]; 
        		a[j]=tmp;
			i++; 
        		j--;
		}
	}
	while (i<=j);
	
	if (k<=j)findkth( l, j);
	else if (i<=k)findkth ( l, j);
	else findkth ( j+1, i-1);
}
int main(){
    
	int n;
	cin >> n>> k;
	
	for (int i=0; i<n; i++) cin >> a[i];
	findkth ( 1, n);
	for (int i=0; i<n; i++) cout << a[i]<< " ";
	
    return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...