Как получить максимальное произведение массива

#c

#c

Вопрос:

 #include <iostream>

using namespace std;

int main()
{
int a[] = {2,3};
int b[] = {2,1};
int c[2];
int n = sizeof(a)/sizeof(a[0]);
   int m = sizeof(b)/sizeof(b[0]);
   int i,j;
    int sum,prd;



    for(i=0;i<n;i  ){
        for(j=m-1;j>=0; j--){
           sum = a[i] b[j];
           prd = a[i]*b[j];
             cout<<sum << " -- "<<prd<<"n";
            if(sum > prd){
            c[i] = sum;
            break;
            }else{
            c[i] = prd;
           }
        }
    }

    cout<<c[0]*c[1];    
}
  

Здесь я пытаюсь получить максимальное произведение, например
, если a [0] b [1] является максимальным из a[0] * b[1], поэтому я хочу сохранить сумму
, если a [1] b [0] является максимальным из a[0] * b[1] итак, я хочу сохранить продукт

затем я пытаюсь сохранить его в массив c

Комментарии:

1. Почему бы просто не std::sort использовать два массива? Тогда это всего лишь несколько тестов, чтобы увидеть, что такое максимальное произведение и сумма.

2. не могли бы вы предоставить мне код, пожалуйста

3. не могли бы вы предоставить мне код, пожалуйста — Нет, здесь это так не работает. SO не является сервисом для написания кода. Во-вторых, забудьте на мгновение о кодировании — если бы массивы были отсортированы, разве это не упростило бы тесты? Либо максимальными будут последние два элемента, первые два элемента (если разрешены отрицательные значения), либо некоторая комбинация первого и последнего элементов.

4. Ваше объяснение мне не очень понятно. Может быть, это помогло бы, если бы вы сказали, что не так с вашим кодом? Кажется, это что-то близкое к тому, что вы описываете.

5. @PaulMcKenzie Группа может быть не английской, но, очевидно, если она есть, опубликуйте ее здесь.

Ответ №1:

Вот что вы хотите: сначала вы должны знать комбинации. Для массивов a и b с 2 вспомогательными данными можно сравнить с 4 разными способами. итак, наш массив c [] должен иметь размер 4.

Следуйте приведенному ниже коду:

 #include <iostream>

using namespace std;

int main()
{
    int a[2] = { 2,3 };
    int b[2] = { 2,1 };
    int c[4];
    int n = sizeof(a) / sizeof(a[0]);
    int m = sizeof(b) / sizeof(b[0]);
    int i, j;
    int sum, prd;
    int loopCounter = 0; //for count n'th loop to store in c



    for (i = 0; i < n;   i) { //this loop for a's combinations


        for (j = 0; j < m;   j) { // this loop for b'c combinations

            sum = a[i]   b[j];
            prd = a[i] * b[j];

            cout << sum << " -- " << prd << "n";

            

            if (sum > prd) {
                c[loopCounter] = sum; //I deleted break; which causes ends of loop
            }
            else {
                c[loopCounter] = prd;
            }

              loopCounter; // counter plus 1, for next loop
        }
    }

    for (int d = 0; d < sizeof(c) / sizeof(c[0]);   d) { //scanning all C datas
       
        std::cout << d   1 << ". Stored Data: " << c[d] << std::endl; //showing all

       }
}
  

Вывод:

 4 -- 4 //a[0] b[0]'s Sum vs Multiple
3 -- 2 //a[0] b[1]'s Sum vs Multiple
5 -- 6 //a[1] b[0]'s Sum vs Multiple
4 -- 3 //a[1] b[1]'s Sum vs Multiple
1. Stored Data: 4
2. Stored Data: 3
3. Stored Data: 6
4. Stored Data: 4