Bu basit işlev, girilen 5 harf dizesinin tüm izinlerini neden vermiyor? Ben 120 olması gerektiğini düşünüyorum ve next_permutation yanlış dönünceye kadar sadece bir döngü içinde bütün permütasyon döndürmek için 90.Neden next_permutation bazı permütasyonları atlıyor?
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
// Creates permutation lists for strings
vector<string> createdcombos2(string letters)
{
vector<string> lettercombos;
cout << "Letters are: " << letters << endl; //input string
do
lettercombos.push_back(letters);
while(next_permutation(letters.begin(), letters.end()));
cout <<"Letter combos: " << endl; //print out permutations
for (auto i : lettercombos)
cout << i << endl;
cout << endl << lettercombos.size() << endl; //number of permutations
return lettercombos;
}
int main()
{
string letters = "gnary";
vector<string> lettercombos;
lettercombos = createdcombos2(letters);
}
Sadece 5 harfin hepsi farklıysa 120 olur. (Sadece kayda değer bir yorum) –