题目:爸爸去哪中的三对父子站成一排,各自父子之间不能相邻,比如石头不能相邻郭涛挨着,以此类推共有多少种站法。
选项120,48,240,144
#include <vector>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(int argv, char** argc)
{
vector<char> member = { 'A', 'B', 'C', 'a', 'b', 'c' };
int b = 1; //ABCabc本身是满足要求的一个排列,所以计数从1开始
int flag = 0;
while (next_permutation(member.begin(), member.end()))
{
for (auto i = member.begin(); i != --member.end(); ++i)
{
if (((*i) - *(i + 1)) == 32 || ((*i) - *(i + 1)) == -32)
flag = 1; //父子站在了一起
}
if (flag == 1)
flag = 0;
else
++b; //满足要求,计数加1
}
cout << b<<endl;
}
测试结果
虽然代码输出了正确结果,但是腾讯这道题是选择题,应该有直接计算得出结果的方法。如果你知道,请回复我。