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

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

题目描述

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

输入描述:

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

输出描述:

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

输入

2
1 3
0

输出

-1
#include <stdio.h>

int main(){
int n;
while(scanf("%d",&n)!=EOF){
int array[];
for(int i=;i<n;i++) scanf("%d",&array[i]);
int p;
int fin=-;
scanf("%d",&p);
for(int i=;i<n;i++) {
if(array[i]==p) {
fin=i;
break;}
}
printf("%d",fin);
}
return ;
}

题目描述

输入数组长度 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

输入

5
1 5 2 4 3
3
2 5 6

输出

YES
YES
NO
#include <iostream>
#include <stdio.h>
#include <algorithm>
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<num){
// base = mid+1;
// }
//
// }
// return ans;
//}
//
//int main(){
// int n;
// while (scanf("%d",&n)!=EOF){
// int buf[101];
// int m;
// for(int i=0;i<n;i++){
//
// scanf("%d",&buf[i]);
// }
// sort(buf,buf+n);
// int buf2[101];
// scanf("%d",&m);
// for(int i=0;i<m;i++) scanf("%d",&buf2[i]);
// for(int j=0;j<m;j++){
// int fin = find(buf2[j],buf,n);
// if(fin==1) printf("YES\n");
// else printf("NO\n");
// }
// }
//
// return 0;
//} int main(){
int n;
while (scanf("%d",&n)!=EOF){
int buf[];
for (int i = ; i < ; ++i) buf[i]=;
for (int i = ; i <n ; ++i) {
int cut ;
scanf("%d",&cut);
buf[cut]=;
}
int m;
scanf("%d",&m);
for (int j = ; j < m; ++j) {
int c ;
cin>>c;
if(buf[c]==) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
}

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

题目描述

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

输入描述:

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

输出描述:

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

输入

10
10 12 12 11 11 12 23 24 12 12

输出

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

题目描述

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

输入描述:

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

输出描述:

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

输入

4
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
5
02
03
01
04
03

输出

02 刘唐 男 23
03 张军 男 19
01 李江 男 21
04 王娜 女 19
03 张军 男 19
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
struct E{
char number[];
char name[];
char sex[];
int age;
};
bool cmp(E a,E b){
int fin = strcmp(a.number,b.number);
return fin<;
};
int find(E buf[],char goal[],int n){
int base=;
int top=n-; while (top>=base){
int mid = (base+top)/;
int cut = strcmp(goal,buf[mid].number);
if(cut==) {cout<<buf[mid].number<<" "<<buf[mid].name<<" "<<buf[mid].sex<<" "<<buf[mid].age<<endl; return mid;
break;}
if(cut>) base = mid+;
if(cut<) top = mid-;
}
cout<<"No Answer!"<<endl;
return -;
} int main(){
int n;
while (scanf("%d",&n)!=EOF){
E stu[];
for (int i = ; i < n; ++i) {
cin>>stu[i].number>>stu[i].name>>stu[i].sex>>stu[i].age;
}
sort(stu,stu+n,cmp); int m;
cin>>m; for (int j = ; j < m; ++j) {
char stunum[];
//scanf("%s",stunum);
cin>>stunum;
//cout<<stunum;
find(stu,stunum,n);
} }
return ;
}

算法学习--Day4的更多相关文章

  1. DSP算法学习-过采样技术

    DSP算法学习-过采样技术 彭会锋 2015-04-27 23:23:47 参考论文: 1 http://wr.lib.tsinghua.edu.cn/sites/default/files/1207 ...

  2. 算法学习之C语言基础

    算法学习,先熟悉一下C语言哈!!! #include <conio.h> #include<stdio.h> int main(){ printf(+); getch(); ; ...

  3. Python之路,Day21 - 常用算法学习

    Python之路,Day21 - 常用算法学习   本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的 ...

  4. C / C++算法学习笔记(8)-SHELL排序

    原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组 ...

  5. 算法学习之BFS、DFS入门

    算法学习之BFS.DFS入门 0x1 问题描述 迷宫的最短路径 给定一个大小为N*M的迷宫.迷宫由通道和墙壁组成,每一步可以向相邻的上下左右四格的通道移动.请求出从起点到终点所需的最小步数.如果不能到 ...

  6. 二次剩余Cipolla算法学习笔记

    对于同余式 \[x^2 \equiv n \pmod p\] 若对于给定的\(n, P\),存在\(x\)满足上面的式子,则乘\(n\)在模\(p\)意义下是二次剩余,否则为非二次剩余 我们需要计算的 ...

  7. Manacher算法学习笔记 | LeetCode#5

    Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...

  8. 第四百一十五节,python常用排序算法学习

    第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...

  9. PCA算法学习(Matlab实现)

    PCA(主成分分析)算法,主要用于数据降维,保留了数据集中对方差贡献最大的若干个特征来达到简化数据集的目的. 实现数据降维的步骤: 1.将原始数据中的每一个样本用向量表示,把所有样本组合起来构成一个矩 ...

随机推荐

  1. ORACLE时间函数(SYSDATE)简析

    ORACLE时间函数(SYSDATE)简析 分类: 原文地址:ORACLE时间函数(SYSDATE)简析 作者:skylway 加法 select sysdate,add_months(sysdate ...

  2. bootstrap-table 行内编辑

    1.文件引入 <link rel="stylesheet" href="bootstrap.css"> <link rel="sty ...

  3. (t,p,o) t:p>=o there cannot be more consumer instances in a consumer group than partitions

    https://kafka.apache.org/intro.html Kafka as a Messaging System How does Kafka's notion of streams c ...

  4. 最简单的 IntelliJ IDEA 中使用 GitHub 进行版本控制教程(持续更新中)

    一.在 IntelliJ IDEA 中新建一个项目并提交到 GitHub 1. 运行 IDEA,点击[Create New Project],在 IDEA 中新建一个项目. 2. 在选择项目类型对话框 ...

  5. java之插入排序

    //插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始有序表只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个 ...

  6. mongodb学习之:聚合

    @font-face { font-family: "Times New Roman"; }@font-face { font-family: "宋体"; }p ...

  7. vim编辑makefile时临时不展开tab为空格

    可以先敲ctrl-v组合键,再敲tab键,这样就不会被转换成空格了. 给自己的备忘!

  8. 数据结构之 图论---连通分量的个数(dfs搜索)

    数据结构实验:连通分量个数 Time Limit: 1000MS Memory limit: 65536K 题目描述  在无向图中,如果从顶点vi到顶点vj有路径,则称vi和vj连通.如果图中任意两个 ...

  9. HTML CSS 属性大全

    CSS 属性大全 文字属性 「字体族科」(font-family),设定时,需考虑浏览器中有无该字体. 「字体大小」(font-size),注意度量单位.<绝对大小>|<相对大小&g ...

  10. PHP Json函数不能处理中文的解决办法

    PHP5.2 新增的 json 功能是非常受欢迎的,但是经过测试发现,json_encode 对中文的处理是有问题的: 不能处理GB编码,所有的GB编码都会替换成空字符: utf8编码的中文被编码成u ...