LQ0105 手链样式字符串
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0105 手链样式字符串相关的知识,希望对你有一定的参考价值。
题目来源:蓝桥杯2015初赛 C++ A组E题
题目描述
小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。
他想用它们串成一圈作为手链,送给女朋友。
现在小明想知道:如果考虑手链可以随意转动或翻转,一共有多少不同的组合样式?
输出格式
请你输出该整数。不要输出任何多余的内容或说明性的文字。
问题分析
(略)
AC的C++语言程序如下:
/* LQ0105 手链样式 */
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
set<string> st;
bool judge(string& s)
for (int i = 1; i <= (int)s.length(); i++)
string t = "";
t += s[0];
s.erase(s.begin());
s.insert(11, t);
if (st.find(s) != st.end())
return false;
return true;
int main()
string s = "rrrwwwwyyyyy";
do
bool flag = true;
string s2 = s;
flag = judge(s2);
if (flag)
reverse(s2.begin(), s2.end());
flag = judge(s2);
if (flag) st.insert(s);
while (next_permutation(s.begin(), s.end()));
cout << st.size() << endl;
return 0;
以上是关于LQ0105 手链样式字符串的主要内容,如果未能解决你的问题,请参考以下文章