Перебор кодовых комбинаций
обычная комбинаторика
n!/(n-2)! если не ошибаюсь
обычная комбинаторика [/QUOT]
Спасибо, что откликнулся, но мне бы алгоритм генерирования этих кодовых комбинаций
тебе типо нужен код который переберёт все такие числа?
Так точно, буду признателен, если у кого-то он найдёться или кто-то напишет
/* C */
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;
}
Мне нужно именно генерирование комбинаии, просто прикинуть алгоритм или код. Више привёл код для комбинаторики
[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 в массива А хранитса код
так и праходим все значение последовательно.
элементы - 0,1 (элемент кода по задаче)
всего вариатов = (2^128)-1 (число только из единиц)
перебор всех вариантов берётся инкрементом от 0 до
(2^128)-1 .
посмотри если устоит
на каждом праходе цикла while в массива А хранитса код
так и праходим все значение последовательно.
Спасибо за алгоритм и исходник - вот это мне и нада было!
Спасибо за алгоритм и исходник - вот это мне и нада было!
всегда пожалсто
если чего знаю