您的位置:首页 > Web前端 > CSS

蓝桥杯_手链样式(排列)

2017-03-31 12:10 204 查看

题目:

手链样式

小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。

他想用它们串成一圈作为手链,送给女朋友。

现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?

思路:

全排列,对每种情况转动,翻转检测;

代码:

#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>

using namespace std;

vector<string> uni;

int main()
{
string s("aaabbbbccccc");
int tot = 1, flag = 0;
uni.push_back(s);
while(next_permutation(s.begin(), s.end()))
{
flag = 0;

// 转动
string s2  = s + s;
vector<string>::iterator it = uni.begin();
for(; it != uni.end(); it++)
{
if(s2.find(*it) != string::npos) { flag = 1; break; }
}

// 翻转
if(!flag)
{
reverse(s2.begin(), s2.end());
for(it = uni.begin(); it != uni.end(); it++)
{
if(s2.find(*it) != string::npos) { flag = 1; break; }
}
}

if(!flag) { tot++; uni.push_back(s); }
}
cout << tot;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: