Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

3-х мерное дерево Фенвика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ stl iterator обратный проход http://www.cyberforum.ru/cpp-beginners/thread630021.html
как делается ?
C++ Как убрать зависимость Всем привет.. Использую static_cast и вывожу числовое значение клавиши на экран. Но мне вместо 1 значение всегда выводится такая форма. -32 (номер клавиши) ОТКУДА ЭТОТ -32? Вот код... ... http://www.cyberforum.ru/cpp-beginners/thread630011.html
C++ Изучение Qt и C++ приведет к лучшему пониманию C и системного программирования?
Если я сейчас начну изучать Qt и C++, то потом я смогу без проблем еще начать изучать C и системное программирование?
Присвоение значений C++
Всем доброго времени суток, подскажите как присвоить переменной такое значение? 48847E5536130C10
C++ Совсем запарился с созданием компонентов API си http://www.cyberforum.ru/cpp-beginners/thread629980.html
Вообщем ну не как не хочет отображаться компонент, прочитал книгу в доль и поперек :wall: вот код: #include <Windows.h> #include <WinSock.h> #include "resource.h" #include <CommCtrl.h>...
C++ Класс содержащий объект типа ofstream - не компилится! Здравствуйте! Помогите пожалуйста!=) есть код: #include <fstream> class Monstr { подробнее

Показать сообщение отдельно
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57

3-х мерное дерево Фенвика - C++

28.07.2012, 20:36. Просмотров 1491. Ответов 4
Метки (Все метки)

Дана такая задача:
есть трехмерное пространство. Поступают запросы вида увеличить количество элементов в параллелепипеде от 0, 0, 0 до x, y, z на val, и посчитать сумму в параллелепипеде от x, y, z до x1, y1, z1. Вроде бы все ясно - пишется трехмерное дерево Фенвика, но при подсчете суммы (2 запрос) Какие-то косяки (возможно в том месте, которое похоже на принцип включения-исключения). Тестирующая системы выдает ВА. Помогите, кто может!!! Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void add(int val, int x, int y, int z)
{
    for (int i = x; i < n; i = i | (i + 1))
        for (int j = y; j < n; j = j | (j + 1))
            for (int k = z; k < n; k = k | (k + 1))
                a[i][j][k] += val; 
}
 
int sum(int x, int y, int z)
{
    int ans = 0;
    for (int i = x; i >= 0; i = (i & (i + 1)) - 1)
        for (int j = y; j >= 0; j = (j & (j + 1)) - 1)
            for (int k = z; k >= 0; k = (k & (k + 1)) - 1)
                ans += a[i][j][k];
    return ans;
}
 
int sum(int x, int y, int z, int x2, int y2, int z2)
{
    int a = sum (x2, y2, z2);
    int b = sum (x - 1, y - 1, z - 1);
    int c = sum (x2, y2, z - 1) + sum (x2, y - 1, z2) + sum (x - 1 ,y2, z2);
    int d = sum (x - 1, y - 1, z2) + sum (x - 1, y2, z - 1) + sum (x2, y - 1, z - 1);
    int ans = a + b - c + d;
    return ans; 
}
Добавлено через 2 часа 29 минут
Да ладно люди!!! Столько просмотров, и никто помочь не может????
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru