c语言-谁来帮我看看这代码哪里错了,只是简单的C程序(折半搜索+快速排序),题库上说我数组越界?求帮忙看看

问题描述

谁来帮我看看这代码哪里错了,只是简单的C程序(折半搜索+快速排序),题库上说我数组越界?求帮忙看看

#include
#define MAXN 500+10

int n,m;
long int a[MAXN],b[MAXN],c[MAXN],d[MAXN],cd[MAXN*MAXN];

void sort(long int a[],int xx,int yy)
{
if(xx>=yy)return;
int x=xx,y=yy,k=a[xx];
while(x
{
while(a[y]>=k)
{
if(x<y)y--;
else break;
}
a[x]=a[y];
while(a[x]<=k)
{
if(x<y)x++;
else break;
}
a[y]=a[x];
}
a[x]=k;
sort(a,xx,x-1);
sort(a,x+1,yy);
}

int binarysearch(long int a[],int x,int H,int T)//二分搜索
{
int i=H+(T-H)/2;

if(a[i]==x||a[T]==x||a[H]==x)return 1;
else if(T==H+1)return 0;
else if(H==T)return 0;
else if(x>a[i]) return binarysearch(a,x,i,T);
else if(x<a[i]) return binarysearch(a,x,H,i);

}

int main()//主函数
{
freopen("C:UsershelloworldDesktopputin.txt","r",stdin);
int T;
int i,j,k,numcd=0;
scanf("%d",&T);//循环T次
for(int loop=0;loop<T;loop++)
{
scanf("%d %d",&n,&m);
for(i=0;i<n;i++)
{scanf("%d",&a[i]);}
for(i=0;i<n;i++)
{scanf("%d",&b[i]);}
for(i=0;i<n;i++)
{scanf("%d",&c[i]);}
for(i=0;i<n;i++)
{scanf("%d",&d[i]);}

    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            cd[numcd++]=c[i]+d[j];
        }
    }

    sort(cd,0,numcd-1);//为cd的枚举组合排序

    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            int need=m-(a[i]+b[j]);
            if(binarysearch(cd,need,0,numcd-1))
            {
                printf("YESn");
                break;
            }
        }
        if(j!=n)break;
    }
    if(i==n)printf("NOn");
    numcd=0;
}
return 0;

    /*sort(d,0,n-1);

    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            for(k=0;k<n;k++)
            {
                int x=m-a[i]-b[j]-c[k];
                if(binarysearch(d,x,0,n-1))
                {printf("YESn");break;}
            }
            if(k!=n)break;
        }
        if(j!=n)break;
    }
    if(i==n)
    {printf("NOn");}
    //binarysearch(d[MAXN],)
}
 return 0;*/

}

题目是这样的:
输入的第一行是一个整数T(0<T≤20),代表接下来有T组数据。

每组数据的第一行有两个整数n,m(0<n<500, m为非负整数),n代表每个能量槽电力输出大小的种数,m代表山岭巨人的生命值。

接下来4行,每行有n个数代表该能量槽可选的电力输出大小。可选的电力输出大小ai满足0≤ai<10^9。

详情参看样例输入。

Output
每组数据输出一行,若存在至少一种搭配方式使总伤害刚好等于山岭巨人的生命值则输出“YES”,否则输出“NO”(不包含双引号)。

Sample Input
2
3 16
3 4 5
2 3 4
4 2 3
4 5 6
1 10
1
2
3
11

求帮忙,应该不是很难懂,我的程序

解决方案

Cd[50+10*50+10]

时间: 2024-08-24 12:44:05

c语言-谁来帮我看看这代码哪里错了,只是简单的C程序(折半搜索+快速排序),题库上说我数组越界?求帮忙看看的相关文章

paacal-dp 滑雪 请帮我看看我的代码哪里错了 特别是search过程 谢谢!

问题描述 dp 滑雪 请帮我看看我的代码哪里错了 特别是search过程 谢谢! 滑雪是一项非常刺激的运动,为了获得速度,滑雪的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.给出一个由二维数组表示的滑雪区域,数组的数字代表各点的高度.请你找出这个区域中最长的滑坡. 下面是一个例子: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当

java-大神帮看下我的代码哪里错了?

问题描述 大神帮看下我的代码哪里错了? 题目是编写程序,读入未指定个数的整数,判断读入的正数和负数分别有多少个,然后计算这些输入值的总和及其平均值(不对0计数).当输入为0时,表明程序结束.将平均值以浮点数显示. import java.util.Scanner; public class TextXXXXX { public static void main (String[] args){ Scanner input = new Scanner(System.in); int count1

有人懂fortran语言吗?可以帮我看下代码,写成c语言吗?十分感谢!

问题描述 有人懂fortran语言吗?可以帮我看下代码,写成c语言吗?十分感谢! FUNCTION XTERP(XCC,X,Y,NDEG,NPTS,DINT,IER) XTR 0001 C XTR 0002 C FUNCTION PERFORMS NEWTONS INTERPOLATION FOR DISCRETE DATA XTR 0003 C AS A FUNCTION OF ONE VARIABLE XTR 0004 C XTR 0005 C WHERE XC - INDEPENDENT

c语言-求帮备注解释 C 代码,编译原理 虎书中的

问题描述 求帮备注解释 C 代码,编译原理 虎书中的 虎书绪论里的联系,太凶...大学生表示看着很困难 求给定语句中任意子表达式内的print语句的参数个数,对一个直线式程序语言写的程序进行"解释". 三个头文件 (1)prog1.h A_stm prog(void); (2)slp.h typedef struct A_stm_ *A_stm; typedef struct A_exp_ *A_exp; typedef struct A_expList_ *A_expList; ty

c语言-大神们帮我看看这个代码!!

问题描述 大神们帮我看看这个代码!! 以上代码,在那个地方加上乘除的代码??上面只有加减的!!麻烦了大神! 解决方案 与 plus 平级,当然是按 plus 的实现来增加乘除的代码. 解决方案二: 先加上乘除的相关函数,然后再菜单上增加乘除的相关菜单 解决方案三: what's the question in yours? 解决方案四: 照着加减代码在写就好了,话说实现这儿一个功能要这么复杂吗? 解决方案五: 照着加减代码在写就好了,话说实现这儿一个功能要这么复杂吗? 解决方案六: 程序框架都有

编程c语言-代码哪里错了,帮看看好不

问题描述 代码哪里错了,帮看看好不 帮我看看额,同学问的我也不知道哪里有问题,谢谢啦,帮我分析分析可能是哪方面出错了还是少符号了 解决方案 fopen函数里的逗号怎么是全角的?位置在if语句中. 解决方案二: 完整的代码是怎样的.你截为位什么不带上行号. 看下你的代码中有没有全角的空格和符号. 解决方案三: 完整的代码是怎样的.你截图为什么不带上行号. 看下你的代码中有没有全角的空格和符号. 解决方案四: 是不是ManLog的定义找不到,有没有h文件没有包含. 解决方案五: 貌似 sName 后

c++-C++如何转C语言,跪求帮忙转一下,在线等答案

问题描述 C++如何转C语言,跪求帮忙转一下,在线等答案 各位学长,能不能帮小妹做个作业啊,把C++转换为C语言//附合水准路线解算.cpp#include #include #include #include using namespace std; void Data_Calculate();//数据解算void Data_Show();//结果打印到屏幕void Data_Output();//结果输出到TXT int v[4] i=0;double h[4] L[4] h_v[4] H[

css百度分享-请高手帮改一个CSS代码 让百度分享和文章链接并排

问题描述 请高手帮改一个CSS代码 让百度分享和文章链接并排 .Article-Tool{ border:1px solid #c3d4e7; position:relative; top:-1px; text-align:right; padding:8px; vertical-align:middle; height:15px; background-color:#f4f8fd} .Article-Tool a{width:16px;height:16px;line-height:16px;

控制-【求帮忙】来个大神帮忙写一个脉冲程序的C语言代码

问题描述 [求帮忙]来个大神帮忙写一个脉冲程序的C语言代码 现在需要用PC直接控制步进电机驱动进而来控制步进电机的启停,转动.兄弟我是一点都不会,所以特来此求大神给一个代码.只要能输出高低电平和方波的脉冲就好了!在此谢过啦!!!下面是驱动器型号和基本信息 解决方案 如果只是要高低电平的话,(不知道你用的什么单片机)设从51单片机的P0^0口输出 while(1){ P0^0=0: delay(50);//延时50ms P0^1=1: delay(50);//延时50ms} 解决方案二: 是的呢~