-5

嗨,假设我有一个数组v1[] = {1, 3, 4, 5}and 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];

但不能正常工作。请帮忙。

4

4 回答 4

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);
于 2012-09-15T00:09:38.500 回答
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 答案的略微修改版本,只需使用两个不同的变量。

于 2012-09-15T15:54:26.267 回答
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);
   }
于 2012-09-14T22:41:05.013 回答
-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 个即可。

于 2012-09-15T05:58:48.017 回答