[解题报告] Where is the Marble?

 

题目大意

题目原文:http://uva.onlinejudge.org/external/104/10474.pdf

背景

还是基本的排序问题,题目意思很简单就是首先出入n和q,之后输入n个属于n的数q个属于q的数,判断q中的每个数在n中数的大小派第几。

 Sample Input 

4 1
2
3
5
1
5
5 2
1
3
3
3
1
2
3
0 0

 Sample Output 

CASE# 1:
5 found at 4
CASE# 2:
2 not found
3 found at 3

 

 

算法:

还是使用冒泡算法,我的思路也很简单,

首先:肯定就是输入n和p俩个数的(这里出现了一个很基本的问题忘记加!=EOF)

然后:就是输入那个多数字了啊,再对n中的数字用冒泡排序进行排序

最后:就是比较和输出了

很简单的一个问题,但是我一开始题目看错了一个零导致Runtime erro四次很不该啊。谨记教训。

代码:

这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确。

#include<stdio.h>
int main(void)
{
    int n,q,i,j,swap,count=1,temp=0;
    int a[10020],b[10020];
    while(scanf("%d %d",&n,&q)!=EOF)
    {
        if(n==0&&q==0)break;

        for(i=0;i<n;i++)
        scanf("%d",&a[i]);

        for(i=0;i<q;i++)
        scanf("%d",&b[i]);

        for(i=0;i<n-1;i++)
        {
            swap=0;
            for(j=0;j<n-i-1;j++)
            if(a[j]>a[j+1])
            {
                swap=1;
                temp=a[j+1];
                a[j+1]=a[j];
                a[j]=temp;
            }
            if(!swap)break;
        }

        printf("CASE# %d:\n",count++);
        for(i=0;i<q;i++)
        for(j=0;j<n;j++)
        {
            if(b[i]==a[j])
            {
                printf("%d found at %d\n",b[i],j+1);
                break;
            }
            else if(b[i]!=a[j]&&j==n-1)
            printf("%d not found\n",b[i]);

        }
    }
    return 0;
}

 

posted @ 2013-02-20 18:32  乱七八糟 。  阅读(289)  评论(0编辑  收藏  举报