题意:有n个大理石刻着数字,有q个猜测,对n个大理石数字先排序,然后对q个猜测依次判断是否对应有大理石数字,依照判断输出格式。
思路:这道题比较简单,无非就是先排序,然后查找,因为题意给定的范围,直接用简单查找进行,不用担心超出int范围(其实还是懒,懒得想其他),需要注意的是需要覆盖上一次输入的数,要不然当前输入的大理石数小于上一次输入的会有上次输入的数组残留,我这里把设数组在while里边,省了memset. 题解写的复杂,懒得改了,以后有机会再改。呼呼
没几次看英文题,看的烦的慌,尤其是翻译翻译翻的还不准确,头疼,好好英语,任重道远。
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
int n,q,count=1,k,m;
while(scanf("%d%d",&n,&q)!=EOF)
{
if(n==0&&q==0) break;
k=0,m=0;
int mar[10002],quer[10002];
for(int i=0;i<n;i++) cin>>mar[i];
for(int i=0;i<q;i++) cin>>quer[i];
sort(mar,mar+n);
for(int i=0;i<q;i++)
{
m=0;
for(int j=0;j<n;j++){
if(k==0){
printf("CASE# %d:\n",count);
count++;
k=1;
}
if(quer[i]==mar[j]){
m=1;
printf("%d found at %d\n",quer[i],j+1);
break;
}
}
if(m==0)
printf("%d not found\n",quer[i]);
}
}
return 0;
}