2015-04-22 47 views
0

這是我第一次使用在線評判,我嘗試了一個簡單的程序來熟悉環境。通過uva的中位數程序

這裏是question

我解決了它,但得到了一個錯誤的答案!

#include<stdio.h> 
#include<math.h> 
#include<iostream> 

int main() 
{ 
int t; 
int n; 
int num[10]; 
int i,j,temp; 
int s; 
int fmid; 
std::cin >>t; 
int iter=0; 
while (iter<t) 
{ 
std::cin>>n; 
if (n!=-1){ 
for(i=0;i<n;i++) 
std::cin>>num[i]; 

for(i=0;i<n-1;i++) 

for(j=i+1;j<n;j++) 
if(num[i]>num[j]) 
{temp=num[i]; 
num[i]=num[j]; 
num[j]=temp; 
} 

s=0; 
if (n%2 ==0) 
{ 
int mid=n/2-1; 
int midd=mid+1; 

s=(num[mid]+num[midd])/2; 
fmid=s; 
} 

else 
{s=ceil(n/2); 
fmid=num[s];} 

std::cout<<fmid; 
} 
iter++; 

} 

return 0; 

} 

任何建議,非常感謝。

感謝

回答

1

我會閱讀所有的數字,它們存儲在一個數組,然後在<algorithm>

使用std::sort數組進行排序,請在下面找到我的代碼:

#include <stdio.h> 
#include <math.h> 
#include <iostream> 
#include <algorithm> 

int arr[10]; 

int main() 
{ 
    int N; 
    while ((std::cin >> N) && (N!=-1)){ 
     for(int i=0;i<N;i++) { 
      std::cin >> arr[i]; 
     } 
     std::sort(arr,arr+N); 
     if(N%2 == 1){ 
      std::cout << arr[N/2] << std::endl; 
     } 
     else { 
      double ans = ((double)arr[N/2] + (double)arr[(N/2)-1])/2.0; 
      std::cout << ans << std::endl; 
     } 
    } 

    return 0; 
} 

我希望它爲你工作。

我可以知道問題編號嗎?我會盡力在那裏提交給你一個AC解決方案。

+0

謝謝史蒂芬!一個整潔的解決方案。雖然這個問題並不難,但我無法得到正確的答案:(..!。你有什麼意見可以提高我在網上裁判的表現嗎?..my-no:616507 –

+0

我建議你以保持練習中的問題 系統地從簡介和標準數據結構和庫,圖表等方面嘗試「競爭性編程3書籍」的每個章節,您是否使用uhunt?它有很大的幫助 'http:// uhunt .felix-halim.net /' – yulonglong

+0

你的意思是你的號碼是616507?當你提交你的代碼時,我指的是頁面上的問題號碼? – yulonglong