算法学习--Day4
发布日期:2021-08-11 10:05:27 浏览次数:2 分类:技术文章

本文共 3473 字,大约阅读时间需要 11 分钟。

今天写了两章题目,仍然是比较基础的内容。感觉时间好紧张,怕来不及,所以以后要加快速度了。

今天写的最多的是查找类题目,关键是二分查找的掌握。

 

题目描述

输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。

输入描述:

测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。

输出描述:

对于每组输入,请输出结果。
示例1

输入

21 30

输出

-1
#include 
int main(){ int n; while(scanf("%d",&n)!=EOF){ int array[201]; for(int i=0;i

 

 

题目描述

输入数组长度 n 输入数组      a[1...n] 输入查找个数m 输入查找数字b[1...m]   输出 YES or NO  查找有则YES 否则NO 。

输入描述:

输入有多组数据。每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。

输出描述:

如果在n个数组中输出YES否则输出NO。
示例1

输入

51 5 2 4 332 5 6

输出

YESYESNO
#include 
#include
#include
using namespace std;//int find(int num,int buf[],int n){// int ans=-1;// int base=0;// int top=n-1;// while (top>=base){// int mid = buf[(top+base)/2];// if (mid==num) {ans=1;// break;}// if(mid>num){// top=mid-1;// }// if(mid
>c; if(buf[c]==1) cout<<"YES"<

这个题目我要重点说一下,我注释掉的代码是使用二分查找来做的,但是由于使用搜索过于复杂。。导致我的题目没给ac,所以换之前使用的哈希的思想去做了。就当做练手了。

 

题目描述

在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数, 或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。

输入描述:

第一行是此数组的元素个数k(4
<80),第二行是k个整数,每两个整数之间用空格分隔。

输出描述:

每个案例输出为n行:每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。
示例1

输入

1010 12 12 11 11 12 23 24 12 12

输出

0 7
#include 
#include
using namespace std;int main(){ int n; while (scanf("%d",&n)!=EOF){ int buf[81]; for (int i=0;i
>buf[i]; if(buf[0]!=buf[1]) cout<<0<<" "; for (int j = 1; j < n-1; ++j) { if((buf[j]>buf[j-1]&&buf[j]>buf[j+1])||(buf[j]

 

 

题目描述

输入N个学生的信息,然后进行查询。

输入描述:

输入的第一行为N,即学生的个数(N<=1000)接下来的N行包括N个学生的信息,信息格式如下:01 李江 男 2102 刘唐 男 2303 张军 男 1904 王娜 女 19然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:02030104

输出描述:

输出M行,每行包括一个对应于查询的学生的信息。如果没有对应的学生信息,则输出“No Answer!”
示例1

输入

401 李江 男 2102 刘唐 男 2303 张军 男 1904 王娜 女 1950203010403

输出

02 刘唐 男 2303 张军 男 1901 李江 男 2104 王娜 女 1903 张军 男 19
#include 
#include
#include
using namespace std;struct E{ char number[50]; char name[100]; char sex[5]; int age;};bool cmp(E a,E b){ int fin = strcmp(a.number,b.number); return fin<0;};int find(E buf[],char goal[],int n){ int base=0; int top=n-1; while (top>=base){ int mid = (base+top)/2; int cut = strcmp(goal,buf[mid].number); if(cut==0) {cout<
<<" "<
<<" "<
<<" "<
<
0) base = mid+1; if(cut<0) top = mid-1; } cout<<"No Answer!"<
>stu[i].number>>stu[i].name>>stu[i].sex>>stu[i].age; } sort(stu,stu+n,cmp); int m; cin>>m; for (int j = 0; j < m; ++j) { char stunum[50]; //scanf("%s",stunum); cin>>stunum; //cout<

 

转载于:https://www.cnblogs.com/Pinging/p/8867721.html

转载地址:https://blog.csdn.net/weixin_30621711/article/details/94784322 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:CDN基本认识
下一篇:【原创】easyui中对于dialog页面传值的接收

发表评论

最新留言

不错!
[***.144.177.141]2024年04月08日 03时03分05秒