2012-09-14 191 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的答案略有修改的版本,仅使用两个不同的变量。