Aの各要素のための従来のアレイA、A [i]は、+ K又は-K操作(各要素だけプラスまたはマイナスのいずれかを選択することができる)とすることができます。この操作の後、我々は、アレイBの異なるバージョンの多くを得るだろう 、最大値と最小値の配列の最小差をすべての可能な配列Bを特定してください。

/ *入力

第一行動試験データの各整数K(0 <= K <= 10000)、二番目の配列A(1 <= A.length <= 10000,0 <= A [i]が<= 10000)の挙動

 輸出

各テストケースのために、別々のラインで最小の差の出力。

 サンプル入力

3

1 3 6

サンプル出力

3 * /

#include "stdafx.hを"

書式#include <iostreamの>

書式#include <ベクトル>

書式#include <数値>

書式#include <限界>

名前空間stdを使用。 

int型smallestRange(int型K、int型* A、INT LEN)

{

    I = LEN int型。

    int型、建[10000] [10000]を追加します。

    (int型J = 0; jの<I、J ++)について

    {

        [J] + kは= [j]を追加します。

        建[j]は[J] = - kは、

    }

    int型分= 0;

    (; - ; J ++ int型J = 0 1 J <I)について

    {

        (; Q <I、Q ++ int型のq = J + 1)について

        {

            ; [Q]を追加 - int型のTA1は、[J]を追加します=

            int型TA2 = -1 * TA1。

            INT TJ1 =建[J] - 建[Q]。

            int型TJ2 = -1 * TJ1。

            もし(TA1 <TA2 && TA1 <TJ1 && TA1 <TJ2)

            {

                分= TA1。

            }

            他の{

                もし(TA2 <TA1 && TA2 <TJ1 && TA2 <TJ2)

                {

                    分= TA2。

                }

                他の{

                    もし(TJ1 <TA1 && TJ1 <TA2 && TJ1 <TJ2)

                    {

                        分= TJ1。

                    }

                    他の{

                        分= TJ2。

                    }

                }

            }

        }

    }

    分を返します。

}

int型_tmain(int型のargc、_TCHAR * ARGV [])

{

    int型のk;

    裁判所未満<< "K" <<てendl;

    cinを>> K;

    int型A [10000];

    int = 0、I = 0;

    裁判所未満<< "A" <<てendl;

    (> = 0で)、一方

    {

        cinを>>中。

        [I] =で;

        I ++;

    }

    int型のlen = I-1;

   int型のres;

    smallestRange RES =(A、のみ)。

    coutの<< RES <<てendl;

    0を返します。

}

 

 

 

おすすめ

転載: www.cnblogs.com/yuanch2019/p/11537274.html