| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1210 人关注过本帖
标题:很白痴的一个问题!!!囧。。。
只看楼主 加入收藏
cb_1212
Rank: 1
等 级:新手上路
帖 子:126
专家分:5
注 册:2011-4-28
收藏
得分:0 
回复 20楼 jcw08120110
我贴你代码上交就是超时嘛 。。。这个是事实。。
2011-11-19 15:33
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
回复 19楼 jcw08120110
这个只能说你对时间复杂度的分析完全不会,很明确得告诉你先排序再二分肯定比直接顺序查找快
2011-11-19 15:40
cb_1212
Rank: 1
等 级:新手上路
帖 子:126
专家分:5
注 册:2011-4-28
收藏
得分:0 
回复 22楼 czz5242199
帮我看看。。。怎么总是错。。。。。
[code#include<iostream>
#include<cstdlib>
using namespace std;

int cmp(const void *a,const void *b)
{
    return *(int *)a-*(int *)b;
}
bool search(int key,int min,int max,int a[])
{
    int mid;
    while(min<=max)
    {
        mid = (min + max)/2;
        if(key == a[mid]) return true;
        else if(key < a[mid]) return search(key,min,mid-1,a);
        else if(key > a[mid]) return search(key,mid+1,max,a);
    }
    return false;   //查找失败
}

int main()
{
    int i,n,m,key;
    int a[100000];
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    qsort(a,100000,sizeof(a[0]),cmp);
    while(m--)
    {
        scanf("%d",&key);
        if(search(key,0,n-1,a) == true)
            printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}][/code]
2011-11-19 15:46
cb_1212
Rank: 1
等 级:新手上路
帖 子:126
专家分:5
注 册:2011-4-28
收藏
得分:0 
回复 22楼 czz5242199
程序代码:
#include<iostream>
#include<cstdlib>
using namespace std;

int cmp(const void *a,const void *b)
{
    return *(int *)a-*(int *)b;
}
bool search(int key,int min,int max,int a[])
{
    int mid;
    while(min<=max)
    {
        mid = (min + max)/2;
        if(key == a[mid]) return true;
        else if(key < a[mid]) return search(key,min,mid-1,a);
        else if(key > a[mid]) return search(key,mid+1,max,a);
    }
    return false;   //查找失败
}

int main()
{
    int i,n,m,key;
    int a[100000];
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    qsort(a,100000,sizeof(a[0]),cmp);
    while(m--)
    {
        scanf("%d",&key);
        if(search(key,0,n-1,a) == true)
            printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}
2011-11-19 15:47
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
qsort(a,100000,sizeof(a[0]),cmp);

100000改成n
2011-11-19 15:49
cb_1212
Rank: 1
等 级:新手上路
帖 子:126
专家分:5
注 册:2011-4-28
收藏
得分:0 
回复 25楼 czz5242199
呃呃 我搞错了。。。。。。。。。。。。
2011-11-19 15:52
cb_1212
Rank: 1
等 级:新手上路
帖 子:126
专家分:5
注 册:2011-4-28
收藏
得分:0 
回复 26楼 cb_1212
已经AC啦!!!谢了。。。。。、、
都怪我基础差!!!下面是终极版的。。绝对正确!!!
程序代码:
#include<iostream>
#include<cstdlib>
using namespace std;

int cmp(const void *a,const void *b)
{
    return *(int *)a-*(int *)b;
}
bool search(int key,int min,int max,int a[])
{
    int mid;
    while(min<=max)
    {
        mid = (min + max)/2;
        if(key == a[mid]) return true;
        else if(key < a[mid]) return search(key,min,mid-1,a);
        else if(key > a[mid]) return search(key,mid+1,max,a);
    }
    return false;   //查找失败
}

int main()
{
    int i,n,m,key;
    int a[100000];
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    qsort(a,n,sizeof(a[0]),cmp);
    while(m--)
    {
        scanf("%d",&key);
        if(search(key,0,n-1,a))
            printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}
2011-11-19 15:56
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:20 
原来就一组测试数据  害得我Output Limit Exceed    好几次

                                         
===========深入<----------------->浅出============
2011-11-20 00:46
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:20 
为什么不直接用下标???

—>〉Sun〈<—
2011-11-20 01:26
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 29楼 cosdos
因为有负数

                                         
===========深入<----------------->浅出============
2011-11-20 01:58
快速回复:很白痴的一个问题!!!囧。。。
数据加载中...
 
   



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

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