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

Динамический массив с большим количеством элементов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ вызов конструктора http://www.cyberforum.ru/cpp-beginners/thread807079.html
Здарова! Есть допустим класс: class Str { Str(); Str(Str&); Str(char*); };
C++ Где ошибка? Чтение массива из файла Пишу программу которая читает вектор и массив из файла. После чего перемножает вектор на массив (получается в итоге вектор). причем отправка на кластеры происходит по столбцам. Но прога да же читать файл не хочет. Файл физичиски присутствует и заполнено но на экран нечего не выводится, а прога падает. stdafx.h #pragma once #include "targetver.h" #include <stdio.h> #include <tchar.h>... http://www.cyberforum.ru/cpp-beginners/thread807062.html
C++ Как такое может быть? (вызов функции-члена без объекта)
собственно вопрос озвучен. #include <iostream> using namespace std; class Test { public: void print() {
C++ Написать рекурсивную функцию, которая вначале печатает все отрицательные числа, а затем все положительные числа
Дана последовательность ненулевых чисел, в конце которой следует 0. Написать рекурсивную функцию, которая вначале печатает все отрицательные числа, а затем все положительные числа
C++ Проверить, принадлежит ли введенная точка заданной области http://www.cyberforum.ru/cpp-beginners/thread807031.html
Помогите с программой, очень нужно! Разработка алгоритма решения Первым шагом алгоритма должен быть ввод координат точки: x и y. Для большего удобства при анализе результатов можно вывести введенные значения на экран. Добавлено через 1 час 2 минуты нужно найти, принадлежит ли введенная точка данной области!
C++ Принадлежит ли введенная точка данной области? Помогите с программой, очень нужно! Разработка алгоритма решения Принадлежит ли введенная точка данной области? вот условие задачи Первым шагом алгоритма должен быть ввод координат точки: x и y. Для большего удобства при анализе результатов можно вывести введенные значения на экран. подробнее

Показать сообщение отдельно
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
13.03.2013, 08:34     Динамический массив с большим количеством элементов
Цитата Сообщение от luck Посмотреть сообщение
массив занимает 4 мб,
пардон умножил неправильно
здесь есть другой путь массив на 32 инта
сейчас обдумаю напишу

Добавлено через 1 час 41 минуту
короче задача решается вообще без выделения памяти
достаточно вспомнить комбинаторику(я целый час вспоминал)
количество комбинаций
n*(n-1);
а количество пар
n*(n-1)/2;

выделяем массив на 32 элемента в него будем заносить количество чисел сумма единиц которых равна номеру элемента массива

потом подсчитаем сумму количество пар в каждом элементе массива
в общем вот код
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
28
29
30
31
32
33
#include <iostream>
 
using namespace std;
unsigned int func(unsigned int);
 
int main()
{
    unsigned long long int res = 0;
    unsigned long long int arr[32]={0};
    unsigned int n,k=0;
    cin>>n;
 
    for (int i=0;i<n;i++)
    {
             cin>>k;
      arr[func(k)]++; 
    
    }
    for (int i=0;i<32;i++)
           res+=(arr[i]*(arr[i]-1))/2;
    cout<<res;
    return 0;
}
 
unsigned int func(unsigned int n1)
{
unsigned int k=0;
  do
  {
    k+=n1%2;
  }while(n1/=2);
return k;
}
проверил до 12 дальше лень
убыстрение
нет выделения памяти
функция вызывается 100000 раз а не 100000*99000
нет ветвлений

Добавлено через 5 минут
проверить не смог, лень регистрироваться
 
Текущее время: 00:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru