Разделяй и властвуй проблема умножения c ++ - PullRequest
0 голосов
/ 15 января 2020

Я только что запустил c ++, и в курсе алгоритма есть псевдокод, и я пробовал его в c ++, но мне не удалось, как я могу конвертировать c ++, любая подсказка помогает мне, спасибо.

+ о умножении массивы, элементы этого массива постоянны от x до 1 2 .... n с одинаковым размером. a1 и b1 по умолчанию ноль.

+ я легко пишу тот же код на python, но c ++. Я не знаю, как нарушить правила безопасности типов.

int* Mult2(int arr1[], int arr2[],int a1,int b1, int size)
{
    int* R = new int[ 2* size - 1];
        if ( size == 1 )
    {
        R[0] = arr1[a1] + arr2 [b1];
        return R;
    } 
    R = Mult2(arr1, arr2, a1, b1, size/2);
    R = Mult2(arr1, arr2, a1+ size/2 , b1+ size/2 , size/2) ;

    int* D0E1 = Mult2(arr1, arr2, a1, b1+size/2, size/2);
    int* D1E0 = Mult2(arr1, arr2, a1+size/2 , b1, size/2);
    R += D0E1 + D1E0;
    return R;
}

ошибка: недопустимые операнды типов 'int *' и 'int *' для двоичного оператора '+' R + = D0E1 + D1E0;

1 Ответ

0 голосов
/ 16 января 2020

я не могу добавить два указателя. так

int* Mult2(int arr1[], int arr2[],int a1,int b1, int size)
{
    int* R = new int[ 2* size - 1];
        if ( size == 1 )
    {
        R[0] = arr1[a1] + arr2 [b1];
        return R;
    } 
    R = Mult2(arr1, arr2, a1, b1, size/2);
    R = Mult2(arr1, arr2, a1+ size/2 , b1+ size/2 , size/2) ;

    int* D0E1 = Mult2(arr1, arr2, a1, b1+size/2, size/2);
    int* D1E0 = Mult2(arr1, arr2, a1+size/2 , b1, size/2);
    for( int i = 0; i < size ; i++)
    {
        R[i] = D0E1[i] + D1E0[i];
    }
    return R;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...