|
Если правельно понял, и тебе необходимо беребрать комбинации слов - есть примерчик. Только учти, что кол-во комбинаций будет факториал от кол-ва слов. Вокак!!! Неслабое ограничение....
Собсно пример:
void variant(int *rez,int kch,int *gur);
int factorial(int ks);
int _tmain(int argc, _TCHAR* argv[])
{
//
int mas[256],//ьрёёшт ё ўшёырьш фы* яхЁхсюЁр трЁшрэЄют
gur[256],// ¤ї, хёышс ьюцэю с√ыю ъырёё√.....
kolch,//ъюышўхёЄтю ўшёхы т ьрёёштх фы* яхЁхсюЁр
i, kolvar;
//чряюыэ*хь
kolch = 16;
for(i=0;i<kolch;i++)
{
mas[i] = i;
gur[i] = 1;
}
// т√тюфшь ш яхЁхсшЁрхь, т√тюфшь ш яхЁхсшЁрхь
kolvar = factorial(kolch);
for(i=0;i<kolvar;i++)
{
printf("\n");
for(int j=0;j<kolch;j++)printf("%d ",mas[j]);
variant(mas,kolch,gur);
}
return 0;
}
int factorial(int ks)
{
int rez = 1;
for(int i = 1; i <= ks; i++) rez = rez * i;
return rez;
}
void variant(int *rez,int kch,int *gur)
{
static int i,kv,l,tur=2,j,ur[30];
for(l=0;l<kch;l++)ur[l]=rez[l];
for(l=tur;l>tur/2;l--)
{
ur[kch-l]=rez[kch-tur+l-1];
ur[kch-tur+l-1]=rez[kch-l];
}
gur[tur]++;
if(gur[tur]>=tur)
{
for(l=2;l<kch && gur[l]>=l;l++);
for(j=0;j<l;j++)gur[j]=1;
tur=l;
}
else tur=2;
for(l=0;l<kch;l++)rez[l]=ur[l];
return ;
}
|