| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 855 人关注过本帖
标题:二分查找的acm题,提交了好几遍都不对,求各路大神的帮忙找找错
只看楼主 加入收藏
非若是也
Rank: 2
等 级:论坛游民
帖 子:13
专家分:21
注 册:2013-11-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
二分查找的acm题,提交了好几遍都不对,求各路大神的帮忙找找错
题目描述

 在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.

输入

 本题多组数据,首先输入一个数字n,然后输入n个数,数据保证数列递增,然后再输入一个查找数字。

输出

 若存在输出YES,不存在输出NO.

示例输入
4
1 3 5 8
3


示例输出
YES

01.#include<stdio.h>  
02.#define N 100000  
03.void main()  
04.{  
05.  int number[N],i,n;  
06.  int fac(int n);  
07.   
08.  scanf("%d",&n);  
09.  while(scanf("%d",&n)!=EOF)  
10.  {  
11.  for(i=0;i<n;i++)  
12.  scanf("%d",&number[i]);  
13.  }  
14.  fac(int n);   
15.  if(1)  
16.  printf("yes");  
17.  if(0)  
18.  printf("no");  
19.}  
20.int fac(int n)  
21.{  
22.   int number[N],x;  
23.   int high,low,mid;  
24.  high=N-1;  
25.  low=0;  
26.  mid=(high+low)/2;  
27.  scanf("%d",&x);  
28.  while(x!=number[mid]&&high-low!=1)  
29.  {  
30.     if(x>number[mid]) low=mid;  
31.     else high=mid;  
32.     mid=(high+low)/2;  
33.  }  
34.  if(x==number[mid])   
35.  return 1;  
36.  else  
37.  return 0;  
38.}
搜索更多相关主题的帖子: include number 元素 
2013-11-25 17:36
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:5 
目测。。

if(fac(n))
{
printf("yes");
}
else
{
printf("no");
}

埋头做牛,抬头做人,低头做狗
2013-11-25 17:41
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:2 
呵呵,目测完主函数就完全不想再往下看了。想说没一句对的,又觉得略夸张,但对的真没几句,夹在错的里它们也没什么意义。

重剑无锋,大巧不工
2013-11-25 17:45
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:6 
我也写了一个,你看看:

版主法眼。我改改。
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n, *s;          // 数据个数, 数组用动态分配内存
    int left, right, mid;     
    int x;             // 要查找的数
    int i;             

    while (scanf("%d", &n) == 1 && n > 0){      // 输入数据个数                    

         s = (int *)malloc(n*sizeof(int));             // 分配内存
         if (s == NULL)
         exit(0);

         for (i = 0; i < n; i++)                   // 输入数据
             scanf("%d", &s[i]);

         scanf("%d", &x);                    // 输入要查找的数

         // 以下查找和输出
         left = 0;
         right = n-1;
         while (left < right) {
              mid = (left + right)/2;
              if (s[mid] == x) {
              printf("YES\n");
              continue;
              }
             else if (s[mid] < x)
                left = mid + 1;
             else
                right = mid - 1;
         }
         printf("NO\n");
    }
    return 0;
}

 

[ 本帖最后由 pangshch 于 2013-11-25 19:17 编辑 ]
2013-11-25 18:22
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:1 
楼上兄弟再看看原题是怎么说的

重剑无锋,大巧不工
2013-11-25 19:05
非若是也
Rank: 2
等 级:论坛游民
帖 子:13
专家分:21
注 册:2013-11-24
收藏
得分:0 
回复 3楼 beyondyf
我知道自己水平很低,,,我今年9月份才开始接触的C语言,是菜鸟中的菜鸟,所以才要虚心向大神请教的
2013-11-25 21:42
非若是也
Rank: 2
等 级:论坛游民
帖 子:13
专家分:21
注 册:2013-11-24
收藏
得分:0 
回复 2楼 pink_duo
大侠,谢谢你
2013-11-25 21:46
非若是也
Rank: 2
等 级:论坛游民
帖 子:13
专家分:21
注 册:2013-11-24
收藏
得分:0 
回复 2楼 pink_duo
大侠,谢谢你
2013-11-25 21:46
非若是也
Rank: 2
等 级:论坛游民
帖 子:13
专家分:21
注 册:2013-11-24
收藏
得分:0 
回复 4楼 pangshch
大侠,,先谢谢你木有嫌弃我这个小菜鸟
2013-11-25 21:47
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:2 
回复 9楼 非若是也
我也刚学,没关系。
再说了,谁不是从菜鸟开始的。加油
2013-11-25 21:53
快速回复:二分查找的acm题,提交了好几遍都不对,求各路大神的帮忙找找错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026980 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved