fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. //multimea de caractere
  8. const vector<char> X = {'a','b','c','1','2','3'};
  9.  
  10. bool suntAlaturateValidare(char c1, char c2) {
  11.  
  12. return (c1 == '1' && (c2 == '2' || c2 == '3')) ||
  13. (c1 == '2' && (c2 == '1' || c2 == '3')) ||
  14. (c1 == '3' && (c2 == '1' || c2 == '2'));
  15. }
  16.  
  17.  
  18. void genereazaCuvinte(vector<char>&cuvant, int pozitie, vector<bool> &folosit, vector<string>& rezultate) {
  19.  
  20. if(pozitie == X.size()) {
  21.  
  22. //a1c2b3
  23. //cuvant[0] = 'a'
  24. //cuvant[1] = '1'
  25. //cuvant[2] = 'c'
  26. //cuvant[3] = '2'
  27. //cuvant[4] = 'b'
  28. //cuvant[5] = '3'
  29.  
  30. rezultate.push_back(string( cuvant.begin(), cuvant.end()));
  31.  
  32. return;
  33. }
  34.  
  35. for(int i = 0; i < X.size(); ++i) {
  36.  
  37. if(!folosit[i] && !suntAlaturateValidare(cuvant[ pozitie-1 ], X[ i ] )) {
  38.  
  39. cuvant[pozitie] = X[i];
  40.  
  41. folosit[i] = true;
  42.  
  43. genereazaCuvinte(cuvant, pozitie + 1, folosit, rezultate);
  44.  
  45. folosit[i] = false;
  46. }
  47. }
  48. }
  49.  
  50.  
  51. int main(int argc, char const *argv[]) {
  52.  
  53. //vectorul pentru a stoca cuvantul generat
  54. vector<char> cuvant(6);
  55.  
  56. //vector pentru a marca daca un caracter este folosit
  57. vector<bool> folosit(X.size(), false);
  58.  
  59. vector<string> rezultate;
  60.  
  61. genereazaCuvinte(cuvant, 0, folosit, rezultate);
  62.  
  63.  
  64. cout<<"URmatoarea permutate(cuvant)" << rezultate[0]<<endl;
  65. cout<<"URmatoarea permutate(cuvant)" << rezultate[1]<<endl;
  66. cout<<"URmatoarea permutate(cuvant)" << rezultate[2]<<endl;
  67. cout<<"URmatoarea permutate(cuvant)" << rezultate[3]<<endl;
  68. cout<<"URmatoarea permutate(cuvant)" << rezultate[4]<<endl;
  69.  
  70.  
  71. return 0;
  72. }
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
URmatoarea permutate(cuvant)a1b2c3
URmatoarea permutate(cuvant)a1b3c2
URmatoarea permutate(cuvant)a1c2b3
URmatoarea permutate(cuvant)a1c3b2
URmatoarea permutate(cuvant)a2b1c3