王道计算机考研机试指南自用刷题笔记-自用5
3.2 查找
例题3.4 找x(哈工大复试上机题)
找x_牛客题霸_牛客网 (nowcoder.com)
1、思路
- 简单题,定义一个数组存储输入的数字,定义一个flag标识是否找到x,对数组进行一次遍历,找到就输出x的下标,修改flag。遍历结束检查flag,未找到输出-1。
2、总结
- 解析中直接将flag设置为-1,若找到就把下标赋值给flag,否则直接输出flag,更方便。
3、源代码
#include <stdio.h>int main() {int n,x;int flag = 0; // 标志是否找到x,默认没找到scanf("%d\n",&n);int a[n];for ( int i = 0 ; i < n ; i++) {scanf("%d ",&a[i]);}scanf("%d\n",&x);for ( int i = 0 ; i < n ; i++) {if (a[i] == x) {printf("%d\n",i);flag = 1;}}if (flag == 0) printf("-1");}
例题3.5 查找(北邮复试上机题)
查找_牛客题霸_牛客网 (nowcoder.com)
1、思路:线性查找
- 定义两个数组,原始数据存入a数组,要查找的数据存入s数组。
- 遍历s数组,嵌套遍历a数组,依次检查s数组中的元素a数组中是否存在。(注意顺序,外层循环一定是遍历s数组)
2、其他解答
- 解答用的是二分查找,我的方法只适用于数据量和查询次数比较小的情况,如果数据量和查询量都比较大,仍采用线性查找,会导致超时。
- 二分查找的适用范围:有序的线性表,因此一定要对a数组进行排序。
- 书上还提到了溢出的问题:
int mid = (low + high)/2
这句通常方便理解。但是当low和high非常接近整型最大值时,如果再用这个表达式就会出现溢出问题,此时就应该用下面这句来代替。二者的功能等价,并且后者不会出现溢出问题。
int mid = low + (high - low)/2
3、源代码
// version 1:线性查找,适合数据量和查询量较小
#include <stdio.h>int main() {int n,m;scanf("%d\n",&n);int a[n];for (int i = 0 ; i < n ; i++) {scanf("%d ",&a[i]);}scanf("%d\n",&m);int s[m];for (int i = 0 ; i < m ; i++) {scanf("%d ",&s[i]);}for (int i = 0 ; i < m ; i++) {int flag = 0; // 找到的标志for ( int j = 0 ; j < n ; j++) {if ( s[i] == a[j] ) {printf("YES\n");flag = 1;break; // 必须要有,否则只能通过2个测试用例}}if(flag == 0) printf("NO\n");}
}
// version 2 :二分查找,适用于有序的线性表
#include <iostream>
#include <algorithm>using namespace std;// 二分查找,适用于有序的线性表
bool binarySearch(int a[], int len, int x) {int low = 0, high = len - 1;int mid;while ( low <= high ) {mid = (low + high) / 2;if (a[mid] == x) // 找到xreturn true;else if (a[mid] > x) // 中间的值比x大,在左半子表查找high = mid - 1;elselow = mid + 1; // 中间的值小于等于x,在右半子表查找}return false; // 没有找到x
}int main() {int n, m;scanf("%d\n", &n);int a[n];for (int i = 0 ; i < n ; i++) {scanf("%d ", &a[i]);}// 一定要记得先排序sort(a,a+n);scanf("%d\n", &m);int s[m];for (int i = 0 ; i < m ; i++) {scanf("%d ", &s[i]);}for (int i = 0 ; i < m ; i++) {if (binarySearch(a,n,s[i])) printf("YES\n");elseprintf("NO\n");}
}
王道计算机考研机试指南自用刷题笔记-自用5相关推荐
- 王道计算机考研机试指南二刷笔记-自用8
目录 写在开头 第3章 排序与查找 3.1 排序 总结 3.2 查找 总结 写在开头 一刷到后面断更了,发现每题都写太浪费时间了. 一刷总结:数学问题.贪心.递归分治.数据结构二基本都刷完了,图论只刷 ...
- 王道计算机考研机试指南刷题笔记-自用
| 写在开头 前两周磨磨唧唧把第二章暴力求解枚举部分的例题和习题都AC了,思路都不太难,找到规律很快就能写出来,想着一定要写刷题笔记,把coding时遇到的困难都记录下来,方便以后复习,却也一直未曾动 ...
- 王道出版的机试指南_王道论坛计算机考研机试指南 四 排版题
例2.7 输出梯形 (九度教程第14题) 时间限制:1秒 **内存限制:32兆 ** 特殊判题:否 题目描述: 输入一个高度h,输出一个高为h,上底边为h的梯形. 输入: 一个整数h(1<=h& ...
- 王道计算机考研机试指南自用刷题笔记-自用6
目录 习题3.5 找最小数(北邮复试上机题) 习题3.6 打印极值点下标(北大复试上机题) 习题3.7 找位置(华科复试上机题) 第4章 字符串 4.1 字符串 4.2 字符串处理 4.1 特殊乘法( ...
- 王道计算机考研机试指南刷题笔记-自用7
目录 例题4.4 统计字符(浙大复试上机题) 例题4.5 字母统计(上交复试上机题) 第5章 数据结构一 5.1 向量 例题5.1 完数与盈数(清华复试上机题) 5.2 队列 例题5.2 约瑟夫问题N ...
- 王道计算机考研机试指南刷题笔记-自用3
| 2.2 模拟 3.其他模拟 例题2.9 KY25(清华大学复试上机题) 剩下的树__牛客网 (nowcoder.com) 1.总结 遇到的坑:直接把给出的区间右端点值减去左端点值+1得到这个区间移 ...
- 王道出版的机试指南_《王道论坛计算机考研机试指南》试读版.pdf
<王道论坛计算机考研机试指南>试读版 王道论坛 王道论坛计算机考研机试指南 王道论坛 2013.01.06 写在前面的话 各位王道的小崽子们,今天你们考完初试了,感觉解放了吧?轻松了吧?无 ...
- 计算机考研机试指南(八)——数学问题
机试指南 cha4 数学问题 % 1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> ...
- 王道论坛计算机考研机试指南怎么样,王道论坛计算机考研机试指南 二 日期类问题...
二日期类问题 例2.3 日期差值 (九度教程第6题) 时间限制:1秒 **内存限制:32兆 ** 特殊判题:否 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数 ...
最新文章
- 开源数据库技术分享及未来展望|CIC 真·全明星阵容
- 数据库必会必知 之 SQL四种语言:DDL DML DCL TCL
- 用python编写图片生成器_python生成器
- linux常用命令总结
- Linux文件服务器实战(系统用户)
- 敏捷与安全不可兼得吗?看完这篇文章后,我想说:未必!
- 使用Python为中秋节绘制一块美味的月饼
- php foreach是什么,php foreach用法是什么
- 基于微信小程序的毕业设计题目(24)php食堂餐厅就餐预约小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
- 继续:Racket网络编程
- 国外天气预报接口 全球热门城市7天天气预报接口
- 前端插件:雪碧图(多图压缩为一张)
- 错过了淘宝、拼多多,今年的电商风口抖音小店无货源你能抓住吗?
- 【Vue基础七】--- 组件和模块概念
- mysql rls_各种类型RLS自适应滤波算法的C++实现
- MTK9652处理器怎么样
- 基于硬件的消息队列中间件 Solace 简介之二
- BINARY和VARBINARY类型的区别
- 高等数学下册学习笔记(二)
- python mysql连接池 知乎_使用python脚本部署mariadb主从架构
热门文章
- 解决wordpress上传文件大小限制
- 4.14-1 图片太大遇到的问题,Bitmap too large to be uploaded into a texture (2340x4160, max=4096x4096)
- 跟着 Cell 学作图 | 桑葚图(ggalluvial)
- js获取域名:location.origin
- QQ汉字验证码原理(C#随机中文汉字验证码)
- 如何获取交通态势数据(上)
- 解压hotfile下载下来大文件方法(for Atlassian)
- apax—apache扩展工具
- Qt5.7.0 msvc 32bit 的QML程序部署到xp系统
- swiper多张轮播图显示分页器,一张不显示