大理石在哪儿 逃离我推掉我的手 2022-05-26 23:12 129阅读 0赞 #### 前言 #### 最近正值清明节放假,自己花时间刷了一些PAT,感觉很不错。 #### 问题描述 #### 现有N个大理石,每个大理石上写了一个非负整数、首先把各数从小到大排序;然后回答Q个问题。每个问题问是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石上写着x。排序后的大理石从左到右编号为1~N。 输入大理石数量和需要回答问题数量,然后输入大理石上的每个非负整数,接着输入x ###### 样例输入: ###### 4 1 2 3 5 1 5 5 2 1 3 3 3 1 2 3 ###### 样例输出: ###### CASE\# 1: 5 found at 4 CASE\# 2: 2 not found 3 found at 3 #### 算法思路 #### 这里主要是排序函数(sort)和查找函数(lower\_bound)的使用,没有其他的算法实现。 #### 代码实现 #### #include<iostream> #include<algorithm> #include<string.h> #define MAX 105 using namespace std; int main() { int m, n, k=0, x; int a[MAX]; int b[MAX]; memset(a, 0, sizeof(a)); while(scanf("%d%d", &m,&n) == 2 && m) { for(int i=0; i<m; i++) scanf("%d", &a[i]); sort(a, a+m); printf("CASE# %d:\n", ++k); while(n--) { scanf("%d", &x); int pos = lower_bound(a, a+m, x) - a; if(a[pos] == x) printf("%d found at %d\n", x, pos); else printf("%d not found\n", x); } } return 0; }
还没有评论,来说两句吧...