2012-09-14 244 views
-5

嗨,假設我有一個數組v1[] = {1, 3, 4, 5}v2[] = {5, 3, 4, 6}。我想比較v1和v2的元素,並獲得最大值作爲輸出(最佳解決方案)。如果V1和V2是陣列 的長度我試圖比較數組的元素

for(i = 0; i <=n; i++) //for items of an array 

for(j = V1; i >= 0; i--) //for items in v1 

    for(k = V2; j >= 0; j--) //for itemns in v2 

    if(v1[i] <= j && v2[i] <= k) 
     int V1 = v1[i]; 
     int V2 = v2[i]; 

但無法正常工作。請幫忙。

+1

您可能想要提及您正在使用哪種語言... – McGarnagle

+0

我使用的是java語言 –

+1

您應該知道只有'int V1 = v1 [i];'行在'if' 'int V2 = v2 [i];'在它之外 –

回答

0

你可以簡單地排序兩個陣列,並獲得最大的(最後一個索引的元素)的值,如果你想現在無論從陣列最大元素,你可以嘗試像他們這樣的

int[] v1= {1, 3, 4, 5}; 
Arrays.sort(v1); 
int v1Max = v1[v1.length-1]; 

int[] v2 = {5, 3, 4, 6}; 
Arrays.sort(v2); 
int v2Max = v2[v2.length-1]; 
if(v1Max>v2Max) { 
System.out.println(v1Max); 
    } 
    if(v2Max>v1Max) { 
     System.out.println(v2Max); 
    } 
+1

我可能會建議不要修改整個數組,只是爲了獲得最大元素。 – oldrinb

+0

@oldrinb是的,你是對的,我只是展示了一個非常基本的解決方案。 – PermGenError

2

比較這樣的:

int max = v1[0]; 

for(int index = 1; index < v1.length; index++){ 
    if(v1[index] > max) 
     max = v1[index]; 
} 
System.out.println("v1 = "+max); 

max = v2[0]; 
for(int index = 1; index < v2.length; index++){ 
    if(v2[index] > max) 
     max = v2[index]; 
} 
System.out.println("v2 = "+max); 
+0

正如上面評論中的OP所述:「我希望我的輸出爲v1 = 5和v2 = 6,因爲它們都是數組中最大的項目。我添加了另一個答案,它將不同數組中的最大值分開。 –

+0

@SimonAndréForsberg:謝謝你的提問,我沒有深入到問題的評論部分:)更新! – Sujay

-1

即使你的循環,什麼行不通可能工作的是(我真的不知道,因爲我不想浪費我的時間......別人已經回答了這個問題問) ,由於缺乏支撐,你的循環將無法正常工作小號...

既然你有你的裏面多行for循環和if語句你必須有他們..

for(i = 0; i <=n; i++) { //for items of an array 

    for(j = V1; i >= 0; i--) { //for items in v1 

     for(k = V2; j >= 0; j--) { //for itemns in v2 

      if(v1[i] <= j && v2[i] <= k) { 
       int V1 = v1[i]; 
       int V2 = v2[i]; 
      } 
     } 
    } 
} 

是將接近工作的唯一途徑...我懷疑它甚至會。我現在可以告訴你,3 for循環不需要這個問題...

由於事實上,@Sujay已經給了只有2

+0

我可以說與你在整個答案中用一個簡單的評論所說的相同的東西:使用大括號'{'和'}'作爲你的陳述。你的答案的其餘部分遠沒有幫助。 –

0

做到這一點的一種方式正如你所指出,您需要的最大每次循環的分別,你正在尋找的是:

int maxInV1 = v1[0]; 
for(int index = 1; index < v1.length; index++) { 
    if(v1[index] > maxInV1) { 
     maxInV1 = v1[index]; 
    } 
} 

int maxInV2 = v2[0]; 
for(int index = 1; index < v2.length; index++) { 
    if(v2[index] > maxInV2) { 
     maxInV2 = v2[index]; 
    } 
} 

注意有可更有效的解決方案,但考慮到在你的代碼的整體混亂,我覺得你應該先學會這基本途徑。我很抱歉地說出這個問題,但是由於問題中存在很多問題,您在問題中發佈的代碼遠沒有解決方案。

另請注意,這是@Sujay的答案略有修改的版本,僅使用兩個不同的變量。