Where is the Marble?(c++std)
原题链接:https://odzkskevi.qnssl.com/53e5c6d66221525b0c18113b513fc3fb?v=1518444985
题目大意:输入一串任意数列后,再输入任意一个数,若有这个数则输出它的最小的位置(注意从小到大排序以后的),没有则输出not found
思路:先使用sort()对数列排序,然后使用二分查找的函数lower_bound()查找该元素即可
AC代码:
1 #include <stdio.h> 2 #include <algorithm> 3 using namespace std; 4 5 int main() 6 { 7 int N,Q,a; 8 int c=1,i,*m; 9 int arr[10000]; 10 while (scanf("%d %d",&N,&Q)&&N!=0&&Q!=0) 11 { 12 printf("CASE# %d:\n",c); 13 for(i=0;i<N;i++) 14 scanf("%d",&arr[i]); 15 sort (arr,arr+N); 16 while(Q--) 17 { 18 scanf("%d",&a); 19 m = lower_bound(arr,arr+N-1,a); 20 if (*m==a) 21 printf("%d found at %d\n",a,(m-arr+1)); 22 else 23 printf("%d not found\n",a); 24 } 25 c++; 26 } 27 return 0; 28 }
Hello World qwq!

浙公网安备 33010602011771号