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

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

题目描述

输入一个数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. TXT文本写入数据库

    load data local infile "D:/abc.txt" into table lee; leedabao.txt内容如下,中间用Tab隔开: 2 yuanpeng ...

  2. 关于erlang解析json数据

    JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读.json的数据格式是文本文档格式的一种.在erlang中可以参考mochiwe ...

  3. Operation not permitted - /usr/bin/pod

    问题描述:执行sudo gem install cocoapods, 提示出错:While executing gem ... (Errno::EPERM)     Operation not per ...

  4. 【BZOJ4296】[PA2015]Mistrzostwa BFS

    [BZOJ4296][PA2015]Mistrzostwa Description 给定一张n个点m条边的无向图,请找到一个点数最多的点集S,满足:1.对于点集中任何一个点,它至少与d个点集中的点相邻 ...

  5. EasyDarwin接入ffmpeg实现264转图片快照功能

    本文转自:http://blog.csdn.net/cai6811376/article/details/51774467 EasyDarwin一直坚持开源精神,所以我们着手把EasyDarwin中使 ...

  6. A Short Introduction to Boosting

    http://www.site.uottawa.ca/~stan/csi5387/boost-tut-ppr.pdf Boosting is a general method for improvin ...

  7. Dropout: A Simple Way to Prevent Neural Networks fromOverfitting

    https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf Deep neural nets with a large number of par ...

  8. 操作系统 资源管理 zookeeper yarn 进程管理 分布式 yarn诞生背景

    zookeeper 信息保管员 YARN 简介 https://www.ibm.com/developerworks/cn/data/library/bd-yarn-intro/index.html

  9. JS中奇葩的假值

    JavaScript中有 6 个值为“假”,这六个值是 false null undefined 0 '' (空字符串) NaN 这里面 false 本身是布尔类型,其它 5 个则不是. 除了这 6 ...

  10. SE18 BADI定义 / SE19 BADI 实现

    明天花30分 再研究下这个: 如果你知道一个BADI名称,可以: 1)使用SE18,输入该BADI名称后,选择Interface,然后查看对应的接口实施样例代码(Example implementat ...