輸入
僅包括一組測試數據,第一行一個正整數N(1≤N≤10 000),接下來N行,每行一個正整數不會超過,第i+1行的數字代表第i頭牛的產奶量。
輸出
處於中間的牛的產奶量
解題思路:得到有序的數列,然後找出中間的那個數字就可以了。
源程序:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
using namespace std;
typedef struct{
int Milk; //奶牛的產奶量
int num; //奶牛編號
}COW;
COW cow[10000];
bool cmp(COW A,COW B);
int main()
{
int N;
while(scanf("%d",&N)!=EOF)
{
for(int i=1;i<=N;i++)
{
scanf("%d",&cow[i].Milk);
cow[i].num = i;
}
sort(cow+1,cow+1+N,cmp); //sort()函數對結構體COW進行排序。
printf("%d\n",cow[(N+1)/2].Milk);
}
return 0;
}
bool cmp(COW A,COW B) //排序規則爲按照產奶量從小到大排序。若產奶量相同,則按照牛的編號從小到大排序。
{
if(A.Milk < B.Milk)
return true;
if(A.Milk == B.Milk&&A.num < B.num)
return true;
return false;
}
運行: