-6

質問の解決策を見つけようとしています....数字があります、例:20 ...そして6つの数字があります:{a、b、c、d、e、f} <20、tは見つけようとしますこれらの数値のすべての値、ただし、この数値の 2 つを (+ または -) 組み合わせて、以下のすべての値を 20 にすることができる場合に限ります。たとえば、

31 を選択します。

a = 22 b = 21 c = 14 d = 11 e = 9 f = 5

22 - 21 = 1 ; 11 - 9 = 2 ; 14 - 11 = 3 ; 9 - 5 = 4 ; f = 5; 11 - 5 = 6 ; 21 - 14 = 7 ; .... .... .... .... .... 21 + 9 = 30 ; 9 + 22 = 31 ;

4

3 に答える 3

5

これは宿題のように思えるので、いくつかのヒントを提供しようと思います。

配列からの 2 つの数値のすべての組み合わせをループしたいとします。これを行うには、すべての数値をループする外側のループを使用してから、そのループ内ですべての数値をループする内側のループを使用できます。

正確に何をしたいのかに応じて、x, y個別に処理するかどうかを決定する必要がありますy, x

于 2010-05-31T19:33:50.947 に答える
1

自然nが与えられとき { a , b , c , d , e , f } { a + b , a + c , _ _ _ ..., a + f , b + c , b + d , ..., b + f , ..., e+ f } ∪ { a - b , a - c , ..., a - f , b - c , b - d , ..., b - f , ..., e - f , b - a , c - a , ..., f - a , c - b , d - b , ..., f - b , ..., f- e } には、1、2、3、4、...、n - 1、およびnが含まれます。

私はこの問題についてあまり考えたことがありませんが、確かに難しい問題のように思えます。トリックがあるのか​​もしれませんが、よくわかりませんが、この問題を解決しなければならない場合、最初に、無限に多くの解がない最小のnを見つけようとします(たとえば、nが 1 の場合、任意の組み合わせ2 つの連続する自然数を含む 6 つの自然数のいずれかが機能します)。

数学のディスカッション フォーラムでこの問題の解決策を見つけることができれば、幸運に恵まれると思います。

于 2010-05-31T20:12:29.163 に答える
0
void FindCombinations(int n, int [] values)
{
   for(int i = 0; i < values.length; i++)
   {
     int left = values[i];
     for(int j = 0; k < values.length; j++)
     {
       int right = values[j];

       if (left == right)
          continue;

       if (left + right < n)
          Console.Write(string.Format("{0} + {1} = {2} < {3}", left, right, left+right, n);
       if (left - right < n)
          Console.Write(string.Format("{0} - {1} = {2} < {3}", left, right, left-right, n);
     }
   }
}

この質問は宿題の匂いがしますが、それほど難しくはありません (解釈するのは間違いなく難しいですが)。

注: このソリューションは効率的であり、効率的O(n^2)ではありません。この点に注意してください。

于 2010-05-31T19:54:51.630 に答える