zoukankan      html  css  js  c++  java
  • 蓝桥杯试题集

    蓝桥杯搜索模拟暴力题:

    题目:

    手链样式

    小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。 
    他想用它们串成一圈作为手链,送给女朋友。 
    现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?

    思路:

    这道题自己还没做出来,其实自己分析到了转动翻转是怎么样的,但是没有想到可以+本身就可以来控制转动和翻转,然后在推是不是可以求出所有情况除以多少多少得出答案,但是也没有推出来,最后看了题解才知道的,感觉自己还是很菜很菜的

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

    具体看代码:

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    vector<string> v;//vector动态存储符合要求的串
    int main()
    {
        string s="aaabbbbccccc";//abc分别代表三种颜色的珠子
        int ans=1,flag=0;
        v.push_back(s);//最初一种情况肯定是符合条件的
        //cout<<*v.begin()<<endl;
    
        while(next_permutation(s.begin(),s.end()))//全排列函数
        {
            flag=0;
            //转动
            string s1=s+s;
    
            vector<string>::iterator it=v.begin();
            for(;it!=v.end();it++)
            {
                if(s1.find(*it)!=s1.npos)
                {
                    flag=1;
                    break;
                }
            }
            //
            if(!flag)
            {
                reverse(s1.begin(),s1.end());
                for(it=v.begin();it!=v.end();it++)
                {
                    if(s1.find(*it)!=s1.npos)
                    {
                        flag=1;
                        break;
                    }
                }
            }
            if(!flag)
            {
                ans++;
                v.push_back(s);
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    当初的梦想实现了吗,事到如今只好放弃吗~
  • 相关阅读:
    [转]十步完全理解SQL
    [转]Java日期时间使用总结
    [转]Mybatis出现:无效的列类型: 1111 错误
    [转]java.lang.OutOfMemoryError: PermGen space及其解决方法
    [转]Spring3核心技术之事务管理机制
    [转]Spring的事务管理难点剖析(1):DAO和事务管理的牵绊
    设计模式之装饰模式
    进程通信
    设计模式之备忘录模式
    设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/caijiaming/p/10035618.html
Copyright © 2011-2022 走看看