# 扑克序列

A A 2 2 3 3 4 4， 一共4对扑克牌。请你把它们排成一行。  
要求：两个A中间有1张牌，两个2之间有2张牌，两个3之间有3张牌，两个4之间有4张牌。

请填写出所有符合要求的排列中，字典序最小的那个。

例如：22AA3344 比 A2A23344 字典序小。当然，它们都不是满足要求的答案。

以下程序实现了这一功能，请你补全空白处内容：

```cpp
#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]);
            __________________
            swap(&str[k], &str[i]);
        }
    }
}
int main()
{
    string str = "AA223344";
    pailie(str, 0, 7);
    return 0;
}
```


## aop

### before

```cpp

```

### after

```cpp

```

## 答案

```cpp
pailie(str, k + 1, m);
```

## 选项

### A

```cpp
pailie(str, k, m);
```

### B

```cpp
pailie(str, k - 1, m);
```

### C

```cpp
pailie(str, k + 1, m + 1);
```
