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

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

题目描述

输入一个数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. centos7 设置网络

    https://lintut.com/how-to-setup-network-after-rhelcentos-7-minimal-installation/ First, type “nmcli ...

  2. 【推荐】初级.NET程序员,你必须知道的EF知识和经验

    阅读目录   推荐MiniProfiler插件 数据准备 foreach循环的陷进 AutoMapper工具 联表查询统计 性能提升之AsNonUnicode 性能提升之AsNoTracking 多字 ...

  3. swift3.0系列完整demo代码库

    https://github.com/soapyigu/Swift30Projects 感谢作者

  4. WWDC2014 IOS8 APP Extensions

    本文转载至 http://blog.csdn.net/jinkaiouyang/article/details/35558623  感谢撰文作者的分享     WWDC14 最令人兴奋的除了新语言sw ...

  5. 获取本地IP V4 出现::1

    获取本地IP V4 竟然得到  ::1 和 192.168.x.xxx 多出来一个::1???? 终于在网络找到答案,原来是禁用了IP V6 导致,重新勾选IP V6,或者卸载IP V6 都可以解决问 ...

  6. arm处理器的历史及现状

    1 arm处理器的发展历史 arm1 arm2 arm3 arm6 arm7 arm9 arm11 arm cortex 2 arm处理器现状 arm cortex A a即application,即 ...

  7. 2.alert() 函数

    ①alert() 函数在 JavaScript 中并不常用,但它对于代码测试非常方便. <!DOCTYPE html><html><body> <h1> ...

  8. HLS切片机

    参考: 1,linux下搭建生成HLS所需的.ts和.m3u8文件http://www.cnblogs.com/mystory/archive/2013/04/07/3006200.html2,iPh ...

  9. 【C++基础学习】引用和指针、重载、函数、内存管理

    第一部分:引用VS指针 引用的含义:变量的别名 注意:变量不能只有别名,必须有一个真实的变量与之相对应 基本数据类型的引用 对别名本身的操作和它的实体的操作是一样的 1.基本数据类型的引用 类型 &a ...

  10. HTML CSS 属性大全

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