今天写了两章题目,仍然是比较基础的内容。感觉时间好紧张,怕来不及,所以以后要加快速度了。
今天写的最多的是查找类题目,关键是二分查找的掌握。
题目描述
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入描述:
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出描述:
对于每组输入,请输出结果。
示例1
输入
21 30
输出
-1
#includeint 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<