solution.cpp 872 字节
Newer Older
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#include <iostream>
using namespace std;
int n = 0;
void swap(char *a, char *b)
{
    int m;
    m = *a;
    *a = *b;
    *b = m;
}
void pailie(string str, int k, int m)
{
    int i;
    if (k > m)
    {
        int a = str.find('A');
        int b = str.find_last_of('A');
        int c = str.find('2');
        int d = str.find_last_of('2');
        int e = str.find('3');
        int f = str.find_last_of('3');
        int g = str.find('4');
        int l = str.find_last_of('4');
        if (b - a == 2 && d - c == 3 && f - e == 4 && l - g == 5)
        {
            cout << str << endl;
        }
    }
    else
    {
        for (i = k; i <= m; i++)
        {
            swap(&str[k], &str[i]);
            pailie(str, k + 1, m);
            swap(&str[k], &str[i]);
        }
    }
}
int main()
{
    string str = "AA223344";
    pailie(str, 0, 7);
    return 0;
}