C ++程序查找任何代数表达式的最小值

这是一个C ++程序,用于查找任何代数表达式的最小值。(x1 + x2 + x3 + .. + xa)*(y1 + y2 + .. + yb)和(a + b )给出整数。考虑一个数字和其余b个数字的所有可能组合并计算其值,从而可以得出最小值。

算法

Begin

   function MaxValue() :

   Arguments:

   a[] = array which store the elements.

   x,y = integers.

   Body of the function:

   1) Find the sum of array elements.

   2) Initialize s=0.

   3) Make for loop i = 0 to (x + y)-1 Shift the integers by 25 so that they become positive.

   4) Declare a boolean array p[i][j] that represents true if sum j can be reachable by choosing i numbers.

   5) Initialization of the array.

   6) Make for loop i = 0 to (x + y)-1 to determine If p[i][j] is true, that means it is possible to select i numbers from (x + y) numbers to sum upto j.

   7) Initialize min_value=INF.

   8) Make for loop i = 0 to (MAX * MAX + 1)-1 to Check if a particular sum can be reachable by choosing x numbers.

   if (p[x][i])

      Get the actual sum as we shifted the numbers by 25 to avoid negative indexing in array .

   9) Print the min_value.

End

示例

#include <bits/stdc++.h>

using namespace std;

#define INF 1e9

#define MAX 25

int MinValue(int a[], int x, int y) {

   int s= 0;

   for (int i = 0; i < (x + y); i++) {

      s+= a[i];

      a[i] += 25;

   }

   bool p[MAX+1][MAX * MAX + 1];

   //将数组初始化为01。-

   memset(p, 0, sizeof(p));

   p[0][0] = 1;

   for (int i = 0; i < (x + y); i++) {

      //k可以是最大x,因为

      //左表达式有x个数字

      for (int k = min(x, i + 1); k >= 1; k--) {

         for (int j = 0; j < MAX * MAX + 1; j++) {

            if (p[k - 1][j])

               p[k][j + a[i]] = 1;

         }

      }

   }

   int min_value = INF;

   for (int i = 0; i < MAX * MAX + 1; i++) {

      if (p[x][i]) {

         int tmp = i - 25 * x;

         min_value = min(min_value, tmp * (s - tmp));

      }

   }

   cout << "Minimum Value: " << min_value ;

}

int main() {

   int x = 2, y = 2; //input is taken of x and y.

   int ar[] = { 7,6,4,3 };

   MinValue(ar, x, y);

   return 0;

}

输出结果

Minimum Value: 91

以上是 C ++程序查找任何代数表达式的最小值 的全部内容, 来源链接: utcz.com/z/347389.html

回到顶部