-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];

しかし、正しく動作しません。助けてください。

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による回答のわずかに変更されたバージョンであり、2つの異なる変数を使用しているだけであることに注意してください。

于 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 つの方法でそれを行う 1 つの方法を提供しています。

于 2012-09-15T05:58:48.017 に答える