文字列の順列を生成するが、重複するケースを削除する一般的なプログラムを作成しました。このために、私は を使用して暗記を使用しています。
void permute(char *a,int i, int n,set<char*> s)
{
if(i==n)
{
if(s.find(a)==s.end()){
cout<<"no dublicate"<<endl;
cout<<a<<endl;
s.insert(a)
}
}
else{
for(int j=i;j<n;j++)
{
swap(a[i],a[j]);
permute(a,i+1,n,s);
swap(a[i],a[j]);
}
}
}
int main()
{
char a[]="aba";
set <char*> s;
permute(a,0,3,s);
return 0;
}
しかし、結果は望みどおりではありません。すべての順列を出力します。誰でも問題を理解するのを手伝ってくれますか。