0

与えられた式 :

K = Ap + Bq + Cr + Ds.

私が試した解決策:

すでに知っている用語 : A、B、C、D、K

p、q、r を指定して用語 s を検索します。

p=0, q=0, r=1;
compute() => s = (K - Ap - Bq - Cr)/D;

s が < 0 になる まで続行します。すべての項に対して p=0、q=0、r=1...n;

同様に、 s が < 0 になる まで続行します。p=0、q=1..n、r=1...n のすべての項に対して。

と、

最後に、 s が < 0 になる まで続行します。p=1..n、q=1..n、r=1..n のすべての項に対して。

p、q、r を更新するためのコード化された 3 つのループ。

K が 1000...、8145、45000 などのように大きくなると、計算に時間がかかります。

外部ライブラリを提案しないでください...コーディングソリューションを探しています。

スニペットの例

for (int i = 0; i < preSpecifiedIterations; i++)
{
 p = i;

 if (A * p > K)  //Exit condition ; if Ap > K
  break;

  for (int j = 0; j < preSpecifiedIterations; j++)
  {
   q = j;

   if (B * q > K) //Exit condition ; if Bq > K
    break;

   for (int k = 1; k < preSpecifiedIterations; k++)
   {
    r = k;
    // compute s given p, q, and r;
    s = (K - (A * p) - (B * q) - (C * r)) / D;

    if (s < 0) //Exit condition ; don't process if s < 0 i.e negative values
     break;
    else
     ...
   }
  }
}

また、次のことに注意してください: preSpecifiedIterations -> 計算前に必要な反復回数を決定することは可能ですか?

上記の問題を解決するためのより良いアルゴリズムはありますか?

たくさん読んでくれてありがとう。

4

1 に答える 1