数据结构上机实验之二分查找(哈希优化)
来源:互联网 发布:钢结构楼梯踏步计算法 编辑:程序博客网 时间:2024/06/05 11:23
题目描述
在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.
输入
本题多组数据,首先输入一个数字n,然后输入n个数,数据保证数列递增,然后再输入一个查找数字。
输出
若存在输出YES,不存在输出NO.
示例输入
41 3 5 83
示例输出
YES
提示
#include<iostream>//用哈希方法 优化#include<stdio.h>#include<string.h>using namespace std;int n;int a[100000];int main(){ int x,y; while(~scanf("%d",&n)) { memset(a,0,sizeof(a));//一定要初始化否则会Time Limit Exceeded for(int i=0;i<n;i++) { scanf("%d",&x); a[x]=1; } scanf("%d",&y); if(a[y]==1) printf("YES\n"); else printf("NO\n"); } return 0;}
传统方法
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int a[1000000];int b;int fen(int p,int q,int key){ int low=p,high=q,mid; while(low<=high)//是<=万万不可少= { mid=(low+high)/2; if(a[mid]==key) return 1; if(a[mid]<key) return fen(mid+1,q,key); if(a[mid]>key) return fen(p,mid-1,key); } return -1;}int main(){ int n,y; while(~scanf("%d",&n)) { for(int i=0; i<n; i++) { scanf("%d",&a[i]); } scanf("%d",&b); y=fen(0,n-1,b); if(y==1) printf("YES\n"); else if(y==-1) printf("NO\n"); } return 0;}
stl方法
#include <iostream>#include <algorithm>using namespace std;int a[10000000];int main(){ int n,x; while(cin>>n){ for(int i=0;i<n;i++) cin>>a[i]; cin>>x; if(binary_search(a,a+n,x)) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0;}
来源
cz
示例程序
0 0
- 数据结构上机实验之二分查找(哈希优化)
- 数据结构上机实验之二分查找
- SDUT 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- [2039]数据结构上机实验之二分查找
- sdut数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找
- 数据结构上机实验之二分查找 SDUT
- 更新Xcode是其他人的appleID怎么办?怎么使用新的appleID更新Xcode
- extern "C"编译指令
- CentOS6.5下安装flash player插件
- mysql授权+限制连接
- Linux常用命令大全
- 数据结构上机实验之二分查找(哈希优化)
- iOS开发 - UIActivityViewController详解
- Rotate List Java
- C++静态库与动态库(转)
- fseek
- int 和integer的区别
- 解决“升级Windows8.1专业版后无法使用IE上网”的问题
- Hbase简介
- 修改sql server服务器的排序规则