Создайте все анаграммы для слова food. То есть получите все четырехбуквенные комбинации из букв f, o, o, d. Обобщите программу так, чтобы она на входе получала слово, а на выходе выдавала анаграмму.
Мы будем использовать next_permutation это перестановки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> using std::cout; using std::endl; #include <algorithm> using std::next_permutation; using std::sort; int main() { char mass[]={'f','o','o','d'}; //сортируем sort(mass,mass+sizeof(mass)/sizeof(char)); do { cout <<mass[0]<<' '<<mass[1]<<' '<<mass[2]<<' '<<mass[3]<<endl; }while(std::next_permutation(mass,mass+sizeof(mass)/sizeof(char))); return 0; } |
А да забыл обобщить программу щас обобщим.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include <iostream> using std::cout; using std::endl; using std::cin; #include <algorithm> using std::next_permutation; using std::sort; #include <string> using std::string; int main() { string mass("food"); cout <<"vvedite clovo"<<endl; cout <<" ... "; cin >>mass; //нужно обязательно сортировать sort(mass.begin(),mass.end()); do { for(int i=0;i<mass.size();i++) cout <<mass[i]; cout <<endl; }while(next_permutation(mass.begin(),mass.end())); return 0; } |
[youtube]http://www.youtube.com/watch?v=4AVXGjO8w-4[/youtube]