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 手链样式字符串的主要内容,如果未能解决你的问题,请参考以下文章

P1-2017级第一次算法上机 E 比特手链

csu 1987: 绚丽的手链

紫色的手链(求最大值和次大值的异或值最大)

P2871 手链

[USACO07DEC]手链Charm Bracelet——01背包

bzoj1625 / P2871 [USACO07DEC]手链Charm Bracelet