2017-01-19 3 views
-3

地形の高さ(2-d、ala Super Mario)を表す正の整数の配列と平坦な海面を表す整数が与えられている場合、各固有のボリュームを表す整数のコンテナを返します水域。ボリュームがトップアレイに到達する

私にとって問題を解決しないでください!

は、私はいくつかの質問を持っている:

は、第一の例を取ることができます。

int [] arr = {4, 3, 5, 6, 4, 2}; 

int sea_level = 4; 

それが設定されている方法は、このようなものです:

 6 
    5 6 
4 5 6 4 2 
4 3 5 6 4 2 
4 3 5 6 4 2 
4 3 5 6 4 2 

Qだから我々は4オーバーの権利を越えることはできませんか?

したがって、範囲[4,3]および[4,2]([5,6]範囲の後)があります。

しかし、音量はどのように計算されますか?

Arraylist<Integer> list = new Arraylist<>(); 
int volume = 0; 
for(int i = 0; i < arr.length; i++){ 
    if(arr[i] <= sea_level){ 
     volume += arr[i]; 
    } else{ 
     list.add(volume); //volume for one block, then reset down. 
     volume = 0; //loop starts with the next one. 
    } 
} 

この方法はこれですか?私は問題を理解していない。

+0

なぜdownvoteですか? – Amad27

+0

「ボリューム」に追加している値が間違っていることを除いて、あなたは近いと思います。 'arr [i]'が3の場合を見てください。地形が3単位の高さの場合は、水面下の土地が3単位高いことを意味します。だから海面水位が4単位の場合、水にはどのくらいのスペースがありますか?少なくともそれが私の問題の理解方法です。 – ajb

+0

4 - 3?どのように計算しましたか? – Amad27

答えて

1

はあなたの例を考える:

 6 
    5 6  5 
4 5 6  5 
4 3 5 6  5 
4 3 5 6 2 5 
4 3 5 6 2 1 5 

水ラインはそう、4である:

:水 ボリューム水ラインの下穴、またはを作る

 6 
    5 6  5 
~~~~~~~~~~~~5 
4 5 6  5 
4 3 5 6  5 
4 3 5 6 2 5 
4 3 5 6 2 1 5 

 6 
    5 6  5 
~~~~~~~~~~~~5 
4 W 5 6 W W 5 
4 3 5 6 W W 5 
4 3 5 6 2 W 5 
4 3 5 6 2 1 5 

または1立方センチメートルの水、次いで5立方センチメートルの水。

今、あなたはそれをどのように計算しますか...ボリュームが必要です。 水量(4)と地形の高さの間で測定されます... したがって、音量を測定するには:sea_level - a [i]

関連する問題