UVA 10474

UVA 10474
题目意思简单,模型就是排序,查找是否有该数字,有则输出位置,没有输出提示。
具体用到了C++ STL的两个函数模板一个是sort、一个是lower_bound,lower_bound(begin, end, v);
lower_bound与strchr类似,但它使用的是迭代器begin与end返回的是大于等于v的最小数所在的迭代器,
使用该模板函数需要注意的问题是,必须是针对已经排序好得数字,具体代码如下。
 1 #include <cstdio>
 2 #include <algorithm>
 3 
 4 using namespace std;
 5 const int maxn = 10000;
 6 
 7 
 8 int main() {
 9     
10     int n, q, x, a[maxn], kase = 0;
11     while (scanf("%d%d", &n, &q) == 2 && n) {
12         
13         for (int i = 0; i < n; i++) scanf("%d", &a[i]);
14         sort(a, a+n);
15         printf("CASE# %d:\n", ++kase);
16         while (q--) {
17             
18             scanf("%d", &x);
19             int p = lower_bound(a, a+n, x) - a;
20             if (a[p] == x) printf("%d found at %d\n", x, p + 1);
21             else printf("%d not found\n",x);
22             
23         }
24     }
25     return 0;
26 }

你可能感兴趣的:(UVA 10474)