uva10474

大理石在哪儿?

做本题主要是为了熟悉STL中的sort函数和lower_bound函数:

#include<cstdio>
#include<algorithm>
using namespace std ;

const int maxn=10000 ;
int main()
{
    int n , m ;
    int a[maxn] ;
    int num=0 ;
    while(scanf("%d%d",&n,&m)==2 && n)//注意 
     {
         printf("CASE# %d:\n",++num) ;
         for(int i=0 ; i<n ; i++)
          scanf("%d",&a[i]) ;
         sort(a,a+n) ;//sort排序函数 
         while(m--)
          {
              int x ;
             scanf("%d",&x) ;
            int q=lower_bound(a,a+n,x)-a ;//在已排数组a中寻找x
            if(a[q]==x)  printf("%d found at %d\n",x,q+1) ;
            else printf("%d not found\n",x) ;    
         }
     }
    return 0 ;
}

sort函数在以前的编程学习中见过了很多次,所以运用起来比较熟练,不再多讲

lower_bound函数的作用是查找“大于或者等于x的第一个位置”,但是在用的时候有一个疑问,为什么要-a?

经过百度百科之后知道,lower_bound函数返回一个“大于或者等于x的第一个位置的指针”,从而明白了lower_bound的用法

猜你喜欢

转载自www.cnblogs.com/xgf-gq/p/9029479.html
今日推荐