Re: Перестановки

From
Oleg Khovayko ()
To
Sergey Bestuzhev
Date
2002-12-29T19:41:07Z
Area
RU.ALGORITHMS
From: Oleg Khovayko <olegh@hotpop.com>

Sergey Bestuzhev wrote:
> Есть 2х мерный массив, в каждой строке по слову, нужно найти все перестановки
> этих слов, 

Брр!! Ты подразумеваешь одномерный массив строк, что ли?

> но не рекурсией ей я знаю как. Или хотяб мысли по этому поводу.

Какие мысли... Учите матчасть! То есть библиотеки.

> (Чтобы небыло упреков говарю сразу:Это не в институт!!! Просто очень надо.)

Ну раз надо - так бери.
Написано на C++ с использованием STL-ной функции, генерящей
перестановки.
Как видишь - дешево и эффективно:


/*---------------------- INCLUDES & DEFINES --------------------*/

#include <string>
#include <vector>
#include <iostream>
#include <numeric>

using namespace std;

typedef vector<string> VS;

#define ALL(V) V.begin(),V.end()
#define PV(V) 
cout<<#V<<"={|";copy(ALL(V),ostream_iterator<typeof(*(V.begin()))>(cout,"|"));cout<<"}\n";

//---------------- main () ----------------

const char *strings[] = {  "First", "Second", "Third", "Fourth" };

int main () {
   VS mas(strings, strings + sizeof(strings)/sizeof(char*));
   sort(ALL(mas));
   do { PV(mas); } while(next_permutation(ALL(mas)));
   return 0;
}

--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)