uva10474

Posted xgf-gq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的用法

以上是关于uva10474的主要内容,如果未能解决你的问题,请参考以下文章

Uva10474

D - Where is the Marble? (UVA - 10474)

UVA 10474

uva10474

UVa10474

uva 10474 Where is the Marble?(简单题)