[解题报告] 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; }