求同存异
输入两个数组(数组元素个数为 6 和 8),输出在两个数组中都出现的元素如 a[6]={2,3,4,5,6,7},b[8]={3,5,7,9,11,13,15,19},则输出 3,5,7。
输入格式
第一行输入6个整数,表示第一个数组里的6个元素。
第二行输入8个整数,表示第二个数组里的8个元素。
输出格式
输出两个数组里都出现的整数,按在第一个数组中出现的顺序输出,每行输出一个整数。
样例输入
2 3 4 5 6 7
3 5 7 9 11 13 15 19
样例输出
3
5
7

问题链接:JSK-353 求同存异
问题描述:(略)
问题分析
    这个问题从数学上来说是一个判定一个集合的元素是否在另外一个集合里的问题。也是一个集合元素匹配问题。
    匹配过程中,使用排序的话则可以使用二分查找,时间上是快的。否则只能用暴力法了。
程序说明
    有关排序的算法函数,C语言的有函数qsort(),但是参数多记不住,还是C++的排序算法函数sort()更加易于使用。
    写了一个C++语言程序,使用排序和二分查找。
    也写了一个C语言程序,使用暴力法实现。暴力法是俗称,也就是枚举法,或称为穷举法。
参考链接:(略)
题记:暴力、排序和二分查找(折半查找)都是程序中最为常见的。

AC的C语言程序如下:

/* JSK-353 求同存异 */#include <stdio.h>#define N1 6
#define N2 8
int a[N1], b[N2];int main()
{for(int i = 0; i < N1; i++)scanf("%d", &a[i]);for(int i = 0; i < N2; i++)scanf("%d", &b[i]);int i, j;for(i = 0; i < N1; i++)for(j = 0; j < N2; j++)if(a[i] == b[j]) {printf("%d\n", a[i]);continue;}return 0;
}

AC的C++语言程序如下:

/* JSK-353 求同存异 */#include <bits/stdc++.h>using namespace std;const int N1 = 6;
const int N2 = 8;
int a[N1], b[N2];bool find(int x)
{int left = 0, right = N2 - 1, mid;while(left < right) {mid = (left + right) / 2;if(x > b[mid])left = mid + 1;else if(x < b[mid])right = mid - 1;elsereturn true;}return left == right ? (x == b[left]) : false;
}int main()
{for(int i = 0; i < N1; i++)scanf("%d", &a[i]);for(int i = 0; i < N2; i++)scanf("%d", &b[i]);sort(b, b + N2);for(int i = 0; i < N1; i++)if(find(a[i]))printf("%d\n", a[i]);return 0;
}

JSK-353 求同存异【暴力+排序+二分】相关推荐

  1. 51Nod-1090 3个数和为0【排序+二分查找】

    1090 3个数和为0 基准时间限制:1秒 空间限制:131072KB 分值:5难度:1级算法题 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3 ...

  2. 数据结构/算法笔记(1)-两种排序 二分查找

    快速排序 确定分界点:在数组中选一个元素的值 x x x 作为分界,(某人说)可任取 (重点)调整区间:以 x x x 为准,将数组分为左右两段,通过换位保证左边都≤x,右边都≥x,即可 递归分别处理 ...

  3. Python每日一练:小艺的口红(暴力、二分、图论三种方法)代写匿名信

    文章目录 前言 0.题目 一.暴力查找 二.二分查找 三.有序二叉树 总结(代写匿名信) 前言 很明显小艺的口红问题是考的是查找算法,对于这种一次性查找,直接暴力就行了,当然咱是为了学习,所以用来练练 ...

  4. 线段树分裂与合并 ----- P2824 [HEOI2016/TJOI2016]排序 [线段树分裂合并 OR 01序列排序+二分线段树]

    题目链接 题目大意: 对一个序列,每次按照升序或者降序排序序列某一段,问你最后的序列是什么? 解法1:二分+线段树 首先我们知道对一个01序列进行排序是很快的!我们只要知道里面有多少个1和多少个0,那 ...

  5. HDU1407 测试你是否和LTC水平一样高 暴力、二分、hash

    测试你是否和LTC水平一样高 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  6. [排序][二分][dp]JZOJ 2747 捡金子

    Description 从前有一个迷宫,迷宫的外形就像一棵带根树,每个结点(除了叶子结点外)恰好有K个儿子. 一开始你在根结点,根结点的K个儿子分别标记为'A', 'B', 'C'-.,而结点'A'的 ...

  7. [蓝桥杯][2015年第六届真题]密文搜索(排序+二分)

    题目描述 福尔摩斯从X星收到一份资料,全部是小写字母组成. 他的助手提供了另一份资料:许多长度为8的密码列表. 福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的. 请你编写一个程序,从第一份资料 ...

  8. P3573-[POI2014]RAJ-Rally【拓扑排序,二分+树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P3573 题目大意 nnn个点mmm条边的DAGDAGDAG,删掉一个点使得最长路最短. 解题思路 先跑一遍拓扑排序 ...

  9. 【牛客OI周赛7-普及组ABCD 非官方题解】暴力,二分,KMP,尺取(STL或Hash)

    A: 链接:https://ac.nowcoder.com/acm/contest/372/A 来源:牛客网 某天,一只可爱的肥橘喵在路上走,突然遇到了一个怪人,那怪人自称PM6,"小肥喵, ...

最新文章

  1. linux怎么卸载webpack,安装webpack后,执行webpack -v命令时报错:SyntaxError: Block-sc
  2. JavaScript的Array一些非常规玩法
  3. SpringMVC、MyBatis声明式事务管理
  4. 重学前端学习笔记(八)--JavaScript中的原型和类
  5. Python 开源电子书资源
  6. 构建贝叶斯深度学习分类器
  7. 【入坑树莓派】烧录系统都烧录了三次(树莓派默认账户密码错误/已删除)
  8. 5分钟学会制作自动化脚本——自动化脚本辅助开发IDE——Selenium IDE介绍(测试工程师必备)
  9. 推荐一款免费在线高效作图工具
  10. ArcGIS Server 基于Token密匙
  11. BiDi单纤双向光模块全解析
  12. C 语言 long long 和 double输入输出格式问题
  13. Python取某个目录下的所有的EXCEL
  14. markdown转pdf
  15. 【故障检测】基于 KPCA 的故障检测【T2 和 Q 统计指数的可视化】(Matlab代码实现)
  16. 求100以内的所有质数(素数)
  17. Pygame开发Flappy Bird小游戏(下)
  18. c语言电报,[编程入门]电报加密-题解(C语言代码)
  19. 逆向爬虫14 Mongo入门
  20. 蒙特卡罗MCNP学习汇总(四)--计数基础-探测器

热门文章

  1. 北京房价研究(2017)
  2. VS当前不会命中断点 还没有为该文档加载任何符号
  3. Storyboard全解析-第二部分
  4. 网游服务器通信架构设计
  5. 红外接收器c语言软件,红外线遥控解码接收程序_C语言.doc
  6. 修改服务器资产信息,CMDB服务器管理系统【s5day90】:创建资产更新服务器硬盘信息...
  7. Kafka的安装部署(分布式部署安装)
  8. java split 实现_PL/SQL实现JAVA中的split()方法的例子
  9. php框架 路由_PHP框架开发之Route路由简单实现
  10. debian php mysql 安装_debian 安装mysql或者php出问题