# 扑克序列 A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。 请填写出所有符合要求的排列中,字典序最小的那个。 例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。 以下程序实现了这一功能,请你补全空白处内容: ```c #include 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; } ``` ## 答案 ```c pailie(str, k + 1, m); ``` ## 选项 ### A ```c pailie(str, k, m); ``` ### B ```c pailie(str, k - 1, m); ``` ### C ```c pailie(str, k + 1, m + 1); ```