蓝桥杯 区间k大数查询 问题求救

lc18562312598 2016-11-09 10:21:39
菜鸟求教!!系统通过不了,感觉是越界之类的。。看不出来了
代码如下:
#include<stdio.h>
const int maxn=1010;
int find(unsigned int seq[],int l,int r)
{
if(l==r) return l;
int i=l,j=r;
int x=seq[i];
while(i<j)
{
while(i<j&&seq[i]>=x)
{
j--;
seq[i]=seq[j];
}
while(i<j&&seq[i]<=x)
{
i++;
seq[j]=seq[i];
}
}
seq[i]=x;
return i;
}
int find1(unsigned int seq[],int l,int r,int k)
{ if(l>=r)\
return seq[l];
int q=find(seq,l,r);
if(q==k-1)
return seq[q];
else if(q>k-1)
return find1(seq,l,q-1,k);
else
return find1(seq,q+1,r,k);

}
int main()
{
int i,n,m;
int l,r,k;
unsigned int seq[maxn];
unsigned int sort_seq[maxn];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&seq[i]);
}
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d%d",&l,&r,&k);
int d=0,j;
for(j=l-1;j<r;j++,d++)
sort_seq[d]=seq[j];
printf("%d\n",find1(sort_seq,0,d-1,d-k+1));
}
return 0;

}
...全文
231 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lc18562312598 2016-11-13
  • 打赏
  • 举报
回复
问题找到了,算法超时了,算法太笨了。
ipqtjmqj 2016-11-10
  • 打赏
  • 举报
回复
自己调试吧,首先确定是编译错误,运行错误,还是逻辑错误。 对于编译错误,很简单,根据编译器的提示,哪一行错了,改一下即可。 对于运行错误,也很简单,输出相关的变量,看运行到哪里与你期望的不一样。 对于逻辑错误,自己再看看题目
paschen 版主 2016-11-10
  • 打赏
  • 举报
回复
建议单步跟踪程序运行,以观察分析原因

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧