|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述
农夫约翰为了找到最“中间”的奶牛,正在调查他的牛群。一半奶牛的产奶量不多于这只“中间”奶牛,另一半的产奶量不少于这只“中间”奶牛。约翰想知道这只“中间”奶牛的产奶量是多少。
给出一个奇数 N
表示奶牛总数,以及它们的产奶量 Ci
,要求找出“中间”产量。1≤N≤10000
, 1≤Ci≤1000000
。
输入描述
第 1 行一个正整数 N
。
第 2∼N+1
行,每行一个正整数,表示其中一只奶牛的产奶量。
输出描述
一行一个整数,表示“中间”产量的一个整数。
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- int n,a[10000],i,j,t;
- cin>>n;
- for(i=0;i<n;i++)
- {
- cin>>a[i];
- }
- for(i=0;i<n-1;i++)
- {
- for(j=0;j<n-1-i;j++)
- {if(a[j]>a[j+1])
- {
- t=a[j];a[j]=a[j+1];a[j+1]=t;
- }
- }
- printf("%d",a[n/2]);
- }
- }
复制代码
代码中有两个问题导致结果不正确:
1. 输出语句的位置不正确。应该将 printf("%d",a[n/2]); 放在第二个循环结束后,而不是放在第二个循环的内部。因为我们需要找到排序后的中间奶牛的产奶量,所以应该在排序完成后输出。
2. 数组 a 的大小应该为 10000 ,而不是 10000 。因为题目中给出的奶牛总数 N 最大为 10000 ,所以数组 a 的大小应该为 10000 。
下面是修改后的代码:
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- int n,a[10000],i,j,t;
- cin>>n;
- for(i=0;i<n;i++)
- {
- cin>>a[ i];
- }
- for(i=0;i<n-1;i++)
- {
- for(j=0;j<n-1-i;j++)
- {
- if(a[j]>a[j+1])
- {
- t=a[j];
- a[j]=a[j+1];
- a[j+1]=t;
- }
- }
- }
- printf("%d",a[n/2]);
- return 0;
- }
复制代码
这样修改后的代码应该能够正确地找到中间产量的奶牛。
|
|