Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перебор кодовых комбинаций

9.8K
06 апреля 2006 года
linker3
28 / / 29.11.2005
Всем доброго времени суток. Вот пришёл с таким траблом. Народ подскажите, пожалуйста, алгоритм перебора комбинаций для заданной длинны кода. Постановка задачи вот такая: Для заданной длинны кода n<=16 расшитать все возможные двоичные кодовые комбинации. И к топику, кто занет где можна найти "сильную" литературу по кодированию иформации, что б в нём были понятия кодового расстояния, равномерные, неравномерные коды. За ранее благодарен!
1.8K
06 апреля 2006 года
pod
144 / / 05.04.2006
n!/(n-2)! если не ошибаюсь
обычная комбинаторика
9.8K
06 апреля 2006 года
linker3
28 / / 29.11.2005
[QUOTE]Originally posted by pod
n!/(n-2)! если не ошибаюсь
обычная комбинаторика
[/QUOT]
Спасибо, что откликнулся, но мне бы алгоритм генерирования этих кодовых комбинаций
1.8K
06 апреля 2006 года
pod
144 / / 05.04.2006
тебе типо нужен код который переберёт все такие числа?
9.8K
06 апреля 2006 года
linker3
28 / / 29.11.2005
Цитата:
Originally posted by pod
тебе типо нужен код который переберёт все такие числа?


Так точно, буду признателен, если у кого-то он найдёться или кто-то напишет

9.8K
06 апреля 2006 года
linker3
28 / / 29.11.2005
Цитата:
Originally posted by OlgaKr
/* C */
Код:
#include <stdio.h>
int factorial(int );
#define N 7
int main(void)
{
  printf("Factorial is %d\n", factorial(N)/factorial(N-2));
  return 0;
}
int factorial(int n)
{
 int i,t=1;
 if(!n) return 1;
 for(i = 2; i <= n; i++)
    t *= i;
 return t;
}


#include<iostream>
using namespace std;
class comb{
public:
int m; //количество позиций (ящиков)
int n; //количество чисел (предметов)
unsigned long int A; //количество размещений без повторений (количество
//всевозможных комбинаций из n элементов по m позиций)
unsigned long int P; //количество перестановок из n элементов по n позициям
unsigned long int C; //количество сочетаний (количество размещений без попадания двух
//предметов в одну позицию/ящик
unsigned long int fact(int); //факториал
void rozm(); //размещения
void perest(); //перестановки
void soch(); //сочетания
};
unsigned long int comb::fact(int dg){
if(dg==0) return 1;
if(dg==1) return 1;
return dg*fact(dg-1);
}
void comb::rozm(){
A = fact(m) / fact(m-n);
}
void comb::perest(){
P = fact(n);
}
void comb::soch(){
C = fact(m) / (fact(m-n) * fact(n));
}
main(){
comb test;
cout<<"Количество позиций: ";
cin>>test.m;
cout<<"Количество элементов: ";
cin>>test.n;
test.rozm();
test.perest();
test.soch();
cout<<"Размещения: "<<test.A<<endl;
cout<<"Перестановки: "<<test.P<<endl;
cout<<"Сочетания: "<<test.C<<endl;

return 0;
}
Мне нужно именно генерирование комбинаии, просто прикинуть алгоритм или код. Више привёл код для комбинаторики

1.8K
07 апреля 2006 года
pod
144 / / 05.04.2006
посмотри если устоит

Цитата:

[COLOR=crimson]
# include <iostream>
using namespace std;

int main()
{
int A[16]={0};
int n=0,i;
bool check=true;

cout<<"enter the number of elements:";
cin>>n;
--n; //уменьшение для того, что в С отшёт елементов масива идёт с 0

while (check==true)
{
for (i=0; i<=n; i++)
cout<<A;
cout<<endl; //вывод каждого из вариантов

if (A[n]==0)
A[n]=1;
else
{
i=n;
while ( (A!=0) && (check==true) )
{
A=0;
--i;
if (i==-1)
{
i=0;
for (i=0; i<n; i++)
A=1;
check=false;
}
}
A=1;
}

}

return 0;
}

[/COLOR]



на каждом праходе цикла while в массива А хранитса код
так и праходим все значение последовательно.

252
07 апреля 2006 года
koderAlex
1.4K / / 07.09.2005
8(бит)*16(байт)=128(бит)
элементы - 0,1 (элемент кода по задаче)
всего вариатов = (2^128)-1 (число только из единиц)
перебор всех вариантов берётся инкрементом от 0 до
(2^128)-1 .
9.8K
10 апреля 2006 года
linker3
28 / / 29.11.2005
Цитата:
Originally posted by pod
посмотри если устоит



на каждом праходе цикла while в массива А хранитса код
так и праходим все значение последовательно.


Спасибо за алгоритм и исходник - вот это мне и нада было!

1.8K
11 апреля 2006 года
pod
144 / / 05.04.2006
Цитата:
Originally posted by linker3
Спасибо за алгоритм и исходник - вот это мне и нада было!


всегда пожалсто
если чего знаю

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог