【算法】全排列

    科技2024-08-17  37

    输入字符串个数 输入字符串 输出全排列 输出全排列个数

    #include<iostream> #include<cstring> using namespace std; int si=0; bool check(string a, int k, int i) { if(i > k){ //排除 i ==k 也就是 允许自身交换 for(int j = k; j < i; ++j){ if(a[j] == a[i]) return false; } } return true; } void pailie(char a[], int lock, int len) //lock为已经锁定的下标 { void Swap(char a[], int x, int y); if (lock == len - 1) { for (int i = 0; i < len; i++){ cout << a[i]; } cout << endl; si++; return; } for (int i = lock; i < len; ++i) { if(check(a,lock,i)){ Swap(a, lock, i); pailie(a, lock + 1, len); Swap(a, i, lock); } } } void Swap(char a[], int x, int y) { char tmp = a[x]; a[x] = a[y]; a[y] = tmp; } int main() { char a[100]; int n; cin>>n; void pailie(char a[], int lock, int len); while (cin >> a) { pailie(a, 0, n); cout<<si; } return 0; }

    运行结果(懒得截图了) 4 输入的 acca输入的,下边是输出的 acca acac aacc caca caac ccaa 6

    Processed: 0.012, SQL: 8