Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
cj3687
2 / 2 / 0
Регистрация: 10.10.2013
Сообщений: 43
1

Разделяй и властвуй

14.11.2013, 17:37. Просмотров 1439. Ответов 3
Метки нет (Все метки)

Всем добрый вечер. Требуется написать рекурсивную функцию (методом разделяй и властвуй), вычисляющую СУММУ элементов массива (со свойством Т). Но у меня почему то считает количество элементов((
Вот код:
C#
1
2
3
4
5
/* Рекурсивная функция, вычисляющая сумму элементов массива со свойством T */
int SumRec (int *a, int l, int r)
{
    return l==r ? T(a[l]): SumRec (a,l,((l+r)/2)) + SumRec (a,((l+r)/2+1),r);
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2013, 17:37
Ответы с готовыми решениями:

Возвести число A в степень N методом разделяй и властвуй
Возвести число A в степень N методом разделяй и властвуй Math.Pow(A,N) не предлагать!

Сортировка массива на основе алгоритма «разделяй и властвуй»
Помогите пожалуйста... Нужно сортировать массив методом выбором с помощью алгоритма на основе...

Разделяй и властвуй: сумма произведений попарных элементов массивов
Всем привет. Есть задача. Дан массив А из 150 чисел, который начинается с 2 и каждый следующий...

В каких случаях лучше использовать алгоритм "разделяй и властвуй"?
Подскажите, в каких случаях лучше использовать алгоритм разделяй и властвуй? Как оформить этот...

Поиск максимального элемента в массиве методом "разделяй и властвуй"
Я в недоумении, поиск максимального элемента в массиве сводится к цикличной проверке всех его...

3
IrineK
Заблокирован
15.11.2013, 15:22 2
Посмотрите,как у вас работает свойство. Вот здесь считаем сумму положительных элементов (свойство a[i]>0):

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int T(int b)
{   return b>0? b : 0;
}
 
int SumRec (int *a, int l, int r)
{    return l==r ? T(a[l]): SumRec (a,l,((l+r)/2)) + SumRec (a,((l+r)/2+1),r);
}
 
int main() 
{   int r = 5, l = 0;
    int a[] = {-1,2,3,4,-5};
 
    printf("%d", SumRec(a, l, r));
 
    getchar();
    return 0;
}
1
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10578 / 6284 / 1575
Регистрация: 25.07.2009
Сообщений: 11,974
15.11.2013, 15:35 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int sum(const int * array, size_t size) {
    return ( ! size ) ? 0 : ( size == 1 ) ? *array : sum(array, size / 2) + sum(array + size / 2, size - size / 2);
}
 
#define SIZE 5
int main(void) {
    int arr[SIZE] = { 1, 2, 3, 4, 5 }, i;
    
    for ( i = 0; i < SIZE; ++i )
        printf("%d %c ", arr[i], ( i < SIZE - 1 ) ? '+' : '=');
    printf("%d\n", sum(arr, SIZE));
    
    return 0;
}
1
cj3687
2 / 2 / 0
Регистрация: 10.10.2013
Сообщений: 43
15.11.2013, 15:58  [ТС] 4
Все, спасибо всем))
0
15.11.2013, 15:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2013, 15:58

Методом "разделяй и властвуй" посчитать задания
Тема больше не актуальна Всем привет, снова мучаюсь с задачей вот уже пару дней. Ввод: ...

Методом "разделяй и властвуй" построить башни
Всем привет, последняя задачу которую нужно решить) Есть бесконечное количество блоков размера...

Решение задачи методом "Разделяй и властвуй"
Помогите, пожалуйста, решить данную задачу методом &quot;разделяй и властвуй&quot; Var a,x,i,q,t,n:integer;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.