算法学习--Day4
今天写了两章题目,仍然是比较基础的内容。感觉时间好紧张,怕来不及,所以以后要加快速度了。
今天写的最多的是查找类题目,关键是二分查找的掌握。
题目描述
输入描述:
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出描述:
对于每组输入,请输出结果。
输入
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,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。
输出描述:
如果在n个数组中输出YES否则输出NO。
输入
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,所以换之前使用的哈希的思想去做了。就当做练手了。
题目描述
输入描述:
第一行是此数组的元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔。
输出描述:
每个案例输出为n行:每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。
输入
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<=1000)
接下来的N行包括N个学生的信息,信息格式如下:
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
02
03
01
04
输出描述:
输出M行,每行包括一个对应于查询的学生的信息。
如果没有对应的学生信息,则输出“No Answer!”
输入
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的更多相关文章
- DSP算法学习-过采样技术
DSP算法学习-过采样技术 彭会锋 2015-04-27 23:23:47 参考论文: 1 http://wr.lib.tsinghua.edu.cn/sites/default/files/1207 ...
- 算法学习之C语言基础
算法学习,先熟悉一下C语言哈!!! #include <conio.h> #include<stdio.h> int main(){ printf(+); getch(); ; ...
- Python之路,Day21 - 常用算法学习
Python之路,Day21 - 常用算法学习 本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的 ...
- C / C++算法学习笔记(8)-SHELL排序
原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组 ...
- 算法学习之BFS、DFS入门
算法学习之BFS.DFS入门 0x1 问题描述 迷宫的最短路径 给定一个大小为N*M的迷宫.迷宫由通道和墙壁组成,每一步可以向相邻的上下左右四格的通道移动.请求出从起点到终点所需的最小步数.如果不能到 ...
- 二次剩余Cipolla算法学习笔记
对于同余式 \[x^2 \equiv n \pmod p\] 若对于给定的\(n, P\),存在\(x\)满足上面的式子,则乘\(n\)在模\(p\)意义下是二次剩余,否则为非二次剩余 我们需要计算的 ...
- Manacher算法学习笔记 | LeetCode#5
Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...
- 第四百一十五节,python常用排序算法学习
第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...
- PCA算法学习(Matlab实现)
PCA(主成分分析)算法,主要用于数据降维,保留了数据集中对方差贡献最大的若干个特征来达到简化数据集的目的. 实现数据降维的步骤: 1.将原始数据中的每一个样本用向量表示,把所有样本组合起来构成一个矩 ...
随机推荐
- jquery设置多个css样式
$(selector).css({property:value, property:value, ...}) 实例: $("p").css({ "color": ...
- 基于EasyIPCamera实现的RTSP跨平台拉模式转发流媒体服务器
本文转自博客:http://blog.csdn.net/xinlanbobo/article/details/53224445 上一篇博客<EasyIPCamera通过RTSP协议接入海康.大华 ...
- EasyIPCamera高性能摄像机RTSP服务器RTSPServer解决方案
EasyIPCamera EasyIPCamera是由EasyDarwin团队开发的一套非常稳定.易用.支持多种平台(包括Windows/Linux 32&64,Android,ARM his ...
- ASP.NET MVC EXTJS 通用主菜单框架
一.说明 首先我不知道定义的文章标题是不是准确,我这篇博文介绍的是一个通用的软件主菜单框架,界面布局用的是extjs,还是先上一个图吧. 软件主界面左侧菜单采用的风格是extjs的手风琴模式,需要注意 ...
- ssemble JavaBeans components into an application without having to write any code
https://docs.oracle.com/javase/tutorial/javabeans/ https://docs.oracle.com/javase/tutorial/javabeans ...
- HDU 2444 The Accomodation of Students (二分图最大匹配+二分图染色)
[题目链接]:pid=2444">click here~~ [题目大意]: 给出N个人和M对关系,表示a和b认识,把N个人分成两组,同组间随意俩人互不认识.若不能分成两组输出No,否则 ...
- const位置上的不同代表哪些不同的意义
const位置上的不同代表哪些不同的意义 exern的用法 这个可以引用在程序编译过程中编译进去的常量数据.换句话说正能在.h文件的声明赋值的常量才可以.并且常量的名字不能相同,如果相同会报错. 全局 ...
- linux内核驱动中对文件的读写 【转】
本文转载自:http://blog.chinaunix.net/uid-13059007-id-5766941.html 有时候需要在Linux kernel--大多是在需要调试的驱动程序--中读写文 ...
- CSS3学习笔记(4)—上下滑动展开的按钮
最近写了一个动画,下面来看看我以前写的一个上下滑动展开的按钮效果: 这类的效果经常会在一些网站页面下载按钮处看到,当你鼠标悬浮在下载按钮时,会提醒你是否已注册,或者点击登录什么的小提示~~~~~ 一. ...
- mysql优化20条原则
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...