2010-04-29 84 views
0

我有一個名爲Names [5]的數組和一個名爲scores [5] [5]的數組。 每一行都對應於相應索引中的名稱。尋找數組中最好的人

我需要在scores數組中找到最高分數並返回與之對應的名稱。

這是我到目前爲止有:

int high = 0; 
for(a=0; a<5; a++) 
    for(b=0; b<5; b++) 
     if(high<scores[a][b]) 
+2

好的。那麼你卡在哪裏?你有多遠?你究竟需要幫助弄清楚什麼? – 2010-04-29 21:22:25

+0

您需要使用更好的數據結構。 – 2010-04-29 21:22:58

+0

我知道我將需要一個循環的配合才能確定邏輯如何工作 – dalton 2010-04-29 21:23:48

回答

4

只需掃描矩陣,記住最好成績和最好的名字至今。 類似於:

String[] names = {"a","b","c","d","e"}; 
int[][] scores = new int[5][5]; 
//... init scores 

int best = Integer.MIN_VALUE; 
String bestName = null; 
for(int nm = 0;nm<5;nm++){ 
    for(int c = 0;c<5;c++){ 
     int score = scores[nm][c]; 
     if (score>=best){ 
      best = score; 
      bestName = names[nm]; 
     } 
    } 
} 
System.out.println(bestName); 
+0

ugh O(N^2)的東西應該是O(1)。數據結構的人。 – 2010-04-29 21:44:33

+0

Int最好= Integer.Min_value做什麼 – dalton 2010-04-29 21:53:37

+0

@Byron:假設我們控制着收集分數的過程,我們可以在這個過程中保持最好的分數和人,然後在O(1)中返回它。但是這個問題涉及數據已經在矩陣中的給定情況。這裏沒有比O(n^2)更好的解決方案 – 2010-04-29 22:03:50