题目不易粘贴,存到我的文档里面了,以后看的话直接找文档就行了。
题目大意:算法竞赛入门经典p.108
思路:排序然后查找。
那么简单的题目竟然因为格式wa了几次,呜呜~
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int a[10005]; int main() { int n,q,flag,t=0; while(~scanf("%d%d",&n,&q)&&(n||q)) { printf("CASE# %d:\n",++t); for(int i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); int index=1; while(q--) { scanf("%d",&flag); for(int i=0;i<n;i++) if(a[i]==flag) { cout<<flag<<" found at "<<i+1<<endl; flag=0; break; } if(flag) cout<<flag<<" not found"<<endl; } } return 0; }
附lower_bound改写的代码:
(调用lower_bound之前必须确定序列为有序序列)
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int a[10005]; int main() { int n,q,flag,t=0; while(~scanf("%d%d",&n,&q)&&(n||q)) { printf("CASE# %d:\n",++t); for(int i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); int index=1; while(q--) { scanf("%d",&flag); int p=lower_bound(a,a+n,flag) - a;//在数组中查找flag if(a[p]==flag) cout<<flag<<" found at "<< p+1 <<endl; else cout<<flag<<" not found"<<endl; } } return 0; }