您的位置:首页 > 其它

UVA 10474 Where is the Marble?

2011-11-22 12:33 337 查看
题目大意:先给定N个数,再输入Q个数,将前面N个数重新按升序排列,求后面的Q个数中每个数在升序排序后的N个数中的位置。

解题思路:直接用qsort对前N个数进行升序排列,然后对后面的Q个数每个分别在排序后的N个数中for一遍。

总结:非常水的一道题,对qsort的用法复习了一遍。

代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

int str[10010];
int re[10010];

int cmp(const void *x, const void *y)
{
int *a = (int *)x;
int *b = (int *)y;
return *a - *b;
}
int main()
{
int n, q;
int num = 0;
while (scanf("%d%d", &n, &q) && (n != 0 || q != 0))
{
memset(str, 0, sizeof(str));
memset(re, 0, sizeof(re));
for (int i = 0; i < n; i++)
scanf("%d", &str[i]);
for (int i = 0; i < q; i++)
scanf("%d", &re[i]);
printf("CASE# %d:\n", ++num);
qsort(str, n, sizeof(int), cmp);
for (int i = 0; i < q; i++)
{
int j;
for (j = 0; j < n; j++)
{
if (str[j] == re[i])
{
printf("%d found at %d\n", re[i], j+1);
break;
}
}
if (j >= n)
printf("%d not found\n", re[i]);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: