Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2014, 17:52   #1
Puhovoi
Пользователь
 
Аватар для Puhovoi
 
Регистрация: 16.10.2010
Сообщений: 47
Вопрос Генерация уникальных последовательностей из набора данных

Доброго времени суток!

Задача встала не совсем тривиальная.

На входе мы имеем одномерный массив вида 1.2.3.4.5.6.7.8

На выходе нужно получить все уникальные последовательности из четырех (или N) элементов, присутствующих в исходном массиве (и не повторяющихся, массив без дубликатов заранее), то есть:

1.2.3.4
1.2.3.6
2.3.5.7

и т.п., то есть сгенерировать большую кучу строк, состоящих из элементов исходного массива.

Прошу ткнуть носом в сторону, куда копать.

Заранее спасибо!
Puhovoi вне форума Ответить с цитированием
Старый 17.02.2014, 18:11   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

в азы комбинаторики, вероятно 1512 строк получится...
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 17.02.2014, 18:24   #3
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

"реализация алгоритма генерации размещений"+Go_Ogle. Вообще получается 1680 строк.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 17.02.2014, 19:33   #4
Puhovoi
Пользователь
 
Аватар для Puhovoi
 
Регистрация: 16.10.2010
Сообщений: 47
По умолчанию

Вероятно, не совсем правильно сформулировал задачу.

Вышеприведенный алгоритм генерирует всевозможные варианты, но:

1234
1324
1432

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

Сформулирую более четко: каждый сгенерированный таким образом массив будет поэлементно проверяться в сотнях других массивов, и тут что 1.2.3.4 проверять, что 1.2.4.3 - результат будет один, а время на просчет крайне увеличится.
Puhovoi вне форума Ответить с цитированием
Старый 17.02.2014, 20:02   #5
009
Пользователь
 
Регистрация: 09.02.2014
Сообщений: 33
По умолчанию

вариант (на с):
Код:
#include <stdio.h>
int const m=8;
int a[m]={1,2,3,4,5,6,7,8};
int const N=4;
int b[N];
void rec(int I, int l)
{
	int i;
	if(l==N)
	{
		for(i=0; i<N; i++)
			printf("%d ", b[i]);
		printf("\n");
		return;
	}
	for(i=I; i<m; i++)
	{
		b[l]=a[i];
		rec(i+1,l+1);
	}

}
int main()
{
  rec(0, 0);  
  return 0;
}
009 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
экспорт набора данных из бд в word kate158 Общие вопросы Delphi 9 22.11.2013 15:27
ADO Обновление набора данных Ale-X91 БД в Delphi 6 14.02.2012 14:38
Создание последовательностей на основе двух данных iamhated Паскаль, Turbo Pascal, PascalABC.NET 0 26.12.2011 17:17
Генерация уникальных кодов Sorro Microsoft Office Excel 6 01.03.2010 10:54
Изменение набора данных BDGrid alex_fcsm БД в Delphi 3 30.01.2010 21:30