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;
    }
    当初的梦想实现了吗,事到如今只好放弃吗~
  • 相关阅读:
    BMIDE开发Soa Services提供给AWC端调用
    TC的Bom行解包和打包的方法
    Java判断一个对象是否是数组
    eclipse里快捷键alt+/不起作用的问题
    脚本实现dwg转PDF的方法--》右键
    Postman设置环境变量
    js滚轮事件兼容写法
    转换时间戳,兼容webkit和IE
    根据对象,返回'&键名=值&键名=值‘形式
    layui 时间插件laydate中动态设置改变min和max值
  • 原文地址:https://www.cnblogs.com/caijiaming/p/10035618.html
Copyright © 2011-2022 走看看