题目描述
游游定义一个字符串是“好串”,当且仅当该字符串相邻的字符不相等。例如"arcaea"是好串,而"food"不是好串。
游游拿到了一个字符串,她可以将该字符串的各个字符顺序随意打乱。她想知道一共可以生产多少种不同的好串?
输入描述:
一个仅包含小写字母的字符串,长度不超过10。
输出描述:
好串的数量。
示例1
输入
aab
输出
1
说明
只有"aba"这一种好串。
示例2
输入
arc
输出
6
示例3
输入
aaa
aaa
输出
0
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
int a[N];int panduan(string a) //判断当前排列组合是否符合好串
{int n = a.length();int i = 1;while (i <= n){if (a[i] == a[i - 1]) return 0;i++;}return 1;
}
int main()
{string a; cin >> a;sort(a.begin(), a.end());int sum = 0;do {sum += panduan(a);} while (next_permutation(a.begin(), a.end()));//会输出一段序列的全排序,有返回true,无返回falsecout << sum << endl;
}
【用法总结】C++ STL中 next_permutation函数的用法_荷叶田田_的博客-CSDN博客