您的位置:首页 > 其它

【STL基础04】UVA-10474-Where is the Marble?

2018-01-30 15:23 375 查看
题目来源:https://cn.vjudge.net/problem/UVA-10474

题目大意:

有几块标着数字的大理石,把它们顺序排列,给出几个数字,找出首个编号与这些数字相同的大理石在序列中的位置。



解题思路:

STL sort和lower_bound

(由于博主还不太习惯C++所以自己造了个破烂轮子结果最后还造错了(十次WA贡献给写错的排序算法= =))

PS:格式十分神奇所以看清楚条件很重要(case要先打出来)

AC代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 10010
void asend(int p[], int m);

int main()
{
int n, q, r=1, c, i, j;
int ma
, qe;
while (scanf("%d%d",&n,&q)==2 && n)
{
printf("CASE# %d:\n",r);
r++;
for (i=0;i<n;i++)
{
scanf("%d",&ma[i]);
}
asend(ma,n);
for (i=0;i<q;i++)
{
scanf("%d",&qe);
for (j=0,c=0;j<n;j++)
{
if (qe==ma[j])
{
printf("%d found at %d\n",qe,j+1);
c++;
break;
}
}
if (!c)
{
printf("%d not found\n",qe);
}
}
}
return 0;
}

void asend(int p[], int m)
{
int i, j, t;
for (i=0;i<m;i++)
{
for (j=i+1;j<m;j++)
{
if (p[j]<p[i])
{
t = p[i];
p[i] = p[j];
p[j] = t;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: