(六省)蓝桥真题 手链样式

news/2024/4/17 11:41:23

手链样式

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

请你提交该整数。不要填写任何多余的内容或说明性的文字。

圆(环)排列:围成一个圆,圆旋转一下就是同一个排列。因此从n个中取r个的圆排列数为

项链排列:项链是立体的,存在翻转的情况,项链排列数为

但是翻转对于左右对称的情况是没有影响的,不需要除以2。

所以项链排列的公式为:

(引用自:https://www.cnblogs.com/lemonbiscuit/p/7776008.html)

方法二:全排列,去掉相同的

在v中存翻转前后的两种结果,对任意新的一种组合方式,在v中进行匹配查找。

do...while结构

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */vector<string> v;//存储已出现的情况 int main(int argc, char** argv) 
{string str = "aaabbbbccccc";int count = 0;v.clear();do{vector<string>::iterator it;for(it = v.begin(); it != v.end(); it++){//从*it的0位置开始找,返回第一次成功匹配str的首字符在*it中的位置if((*it).find(str,0) != string::npos)  break;//如果在已有的里面能找到,即是重复的,判断下一个 }if(it != v.end()) continue;string str2 = str+str;//可以任意转动 v.push_back(str2); reverse(str2.begin(), str2.end());     //需要algorithm头文件 可以翻转 v.push_back(str2);  count++;}while(next_permutation(str.begin(),str.end())) ;cout<<count<<endl;return 0;
}
//  1170 

while...结构

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */vector<string> v;//存储已出现的情况 int main(int argc, char** argv) 
{string str = "aaabbbbccccc";int count = 1;v.clear();string str2 = str+str;v.push_back(str2);reverse(str2.begin(),str2.end());v.push_back(str2); while(next_permutation(str.begin(),str.end())) {vector<string>::iterator it;for(it = v.begin(); it != v.end(); it++){//从*it的0位置开始找,返回第一次成功匹配str的首字符在*it中的位置if((*it).find(str,0) != string::npos)  break;//如果在已有的里面能找到,即是重复的,判断下一个 }if(it != v.end()) continue;string str2 = str+str;//可以任意转动 v.push_back(str2); reverse(str2.begin(), str2.end());     //需要algorithm头文件 可以翻转 v.push_back(str2);  count++;};cout<<count<<endl;return 0;
}
//  1170 

方法三:

在v外的字符串str2中存储旋转和翻转的结果,在str2中匹配查找v中组合

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */vector<string> v;//存储已出现的情况 int main(int argc, char** argv) 
{string str = "aaabbbbccccc";int count = 1;int flag = 0;v.push_back(str);while(next_permutation(str.begin(),str.end())){flag = 0;//转动string str2 = str + str;vector<string>::iterator it;for(it = v.begin(); it != v.end(); it++){if(str2.find(*it) != string::npos){flag = 1;//找到了该种组合方式,不再查找 break;}}//翻转if(flag == 0){//转动后,在v中仍没有找到相同组合 reverse(str2.begin(),str2.end());for(it = v.begin(); it != v.end(); it++){if(str2.find(*it) != string::npos){flag = 1;break;}}}//继转动后,翻转后,在v中仍没有找到相同组合,确定为一种新组合,添加进v if(flag == 0){v.push_back(str);count++;} }cout<<count<<endl;return 0;
}
//  1170 

方法四、map<string,bool> mp 代替 vector 和 flag

#include <iostream>
#include <string>
#include <algorithm>
#include <map>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */map<string,bool> mp;//存储已出现的情况 
int colorNum[3] = {2,4,5};//假定从红色开始放置,所以红色已经少了一个 
char color[4] = "rwy";//红色,白色,黄色bool pd(string str)
{int len = str.size();str += str;//旋转 for(int i = 0; i < len; i++){//取str中的第i个(包括第i个)开始的len个字符 string temp = str.substr(i,len);if(mp[temp] == 1)return 0;//如果在mp中存在,则不增加计数,返回0 }return 1;
}int dfs(string str)
{if(!colorNum[0] && !colorNum[1] && !colorNum[2]){//所有颜色的数量都为0了,得出了一个新的排列 if(pd(str) == 0) return 0;//该排列所属组合已经计数了,返回0,跳出本层dfs reverse(str.begin(),str.end());//翻转 if(pd(str) == 0)return 0;//该排列的翻转排列所属组合已经计数了,返回0,跳出本层dfs //该排列的旋转和翻转所属组合均未计数,添加进mp,计数加一,返回1 ,跳出本层dfsmp[str] = true; return 1;}int count = 0;for(int i = 0; i < 3; i++){if(!colorNum[i]) continue;//该颜色数量为0,结束本层循环,直接进行i+1层循环 string temp = str;colorNum[i]--; temp += color[i];count += dfs(temp);colorNum[i]++;}return count;
} 
int main(int argc, char** argv) 
{mp.clear();cout<<dfs("r")<<endl;return 0;
}
//  1170 

 


http://www.ppmy.cn/news/670811.html

相关文章

蓝桥 手链样式

小明有3颗红珊瑚&#xff0c;4颗白珊瑚&#xff0c;5颗黄玛瑙。 他想用它们串成一圈作为手链&#xff0c;送给女朋友。 现在小明想知道&#xff1a;如果考虑手链可以随意转动或翻转&#xff0c;一共可以有多少不同的组合样式呢&#xff1f; 请你提交该整数。不要填写任何多余的…

English trip EM3 LP 4B Home Design Relationship Teacher:Ryan

课上内容&#xff08;Lesson&#xff09; "green home" 1. saves energy 2. is good for the environment(plants, land, water) If you want your house to be more "green". How can you do it? 1. Unplug your TV, PC, and microwave 2. Use CFL lig…

Django Vue corsheaders跨域问题

跨域问题 记录一下在我自己的django-vue项目里面出现的跨域问题 我的项目之前一直是在本地跑的&#xff0c;因为需要上线测试&#xff0c;所以我就运行在同一个vlan里面 ip段&#xff1a;192.168.1.0/24 突然发现存在跨域问题&#xff0c;我django的接口访问被拦截了。 检查…

【性能测试】轻商城-项目实战2

目录 昨日回顾 今日目标 1、性能测试脚本编写 2、 性能测试环境准备 &#xff08;1&#xff09;特点 &#xff08;2&#xff09;如何达成性能测试环境与生产环境一致 &#xff08;3&#xff09;测试数据的准备(插入10万条数据) 3、执行测试脚本 &#xff08;1&#xf…

[蓝桥杯2015初赛]手链样式-思维+next_permutation枚举(好题)

题目描述 小明有3颗红珊瑚&#xff0c;4颗白珊瑚&#xff0c;5颗黄玛瑙。 他想用它们串成一圈作为手链&#xff0c;送给女朋友。 现在小明想知道&#xff1a;如果考虑手链可以随意转动或翻转&#xff0c;一共有多少不同的组合样式&#xff1f; 输出 请你输出该整数。不要输出任…

科技产品也要讲时尚 P9红蓝新色彰显独特风格

一直以来&#xff0c;科技给人的感觉都是冰冷、深奥的&#xff0c;无论是离我们生活很远的太空航天还是就在我们生活之中的智能手机。一直追求极致体验的华为&#xff0c;正在一定程度上改变人们对科技的一贯严肃的看法。在保持极致科技、极致品质的同时&#xff0c;华为的一系…

故宫珍宝馆完成二期改陈 珍贵红珊瑚盆景揭开面纱

中新网客户端北京1月28日电(记者 上官云 应妮)28日&#xff0c;记者从故宫博物院获悉&#xff0c;故宫博物院珍宝馆二期改陈项目完成&#xff0c;计划于春节前正式对公众开放。一批珍贵文物即将亮相&#xff0c;其中包括铜镀金嵌珐琅海棠式盆红珊瑚盆景等。 中新社记者 杜洋 摄…

【ASP.NET Core】EF Core - “导航属性”

“导航属性”是实体框架用得算是比较频繁的概念。 首先&#xff0c;它是类型成员&#xff0c;其次&#xff0c;他是属性&#xff0c;这不是 F 话&#xff0c;而是明确它的本质。那么&#xff0c;什么场景下会用到导航属性呢&#xff1f;重点就落在“导航”一词上了&#xff0c;…

性能测试的环境以及测试数据构造

一、建立测试环境 在进行性能测试之前&#xff0c;需要先完成性能测试环境搭建工作&#xff1b;一般情况下性能测试环境可以要求运维和开发工程师协助完成&#xff1b; 测试环境一般包括&#xff1a;硬件环境、软件环境及网路环境&#xff1b; 1.1 性能测试环境到的特点 1&…

2021.04.01手链样式

2021.04.01手链样式 题目描述 小明有3颗红珊瑚&#xff0c;4颗白珊瑚&#xff0c;5颗黄玛瑙。 他想用它们串成一圈作为手链&#xff0c;送给女朋友。 现在小明想知道&#xff1a;如果考虑手链可以随意转动或翻转&#xff0c;一共可以有多少不同的组合样式呢&#xff1f; 思路…

黑玛瑙不会流泪

黑玛瑙不会流泪 /抢夺红玛瑙/ 夏朵与史航的见面颇具戏剧性&#xff0c;在小城中心区唯 一一间“玲珑阁里内&#xff0c;夏朵与史航不约而同地指向 玻璃柜中一只棉红色玛瑙手镯。 “不好意思&#xff0c;我们店里的首饰每款只有一件&#xff0c;这 个手镯只能卖给你们其中…

红外测试操作步骤_干货丨红外光谱操作步骤及常见的问题

傅里叶变换红外光谱(Fourier Transform infrared spectroscopy)简写为FTIR。傅里叶红外光谱法是通过测量干涉图和对干涉图进行傅里叶变化的方法来测定红外光谱。红外光谱的强度h(δ)与形成该光的两束相干光的光程差δ之间有傅里叶变换的函数关系。 傅立叶变换测定红外光谱用于控…

中国玛瑙市场趋势报告、技术动态创新及市场预测

出版商&#xff1a;贝哲斯咨询 获取报告样本&#xff1a; 企业竞争态势 该报告涉及的主要国际市场参与者有Yanghong Agate、HL Gemas、Xinchangbao Agate、Yangji Agate、Weicheng Agate、Shengli Agate、Miran Agate、Gemstone、Xinlitun Agate、Yasin And Sohil Agate、Tai…

拼手气红包java_拼手气红包-基于继承实现(Java萌新篇)

拼手气红包-基于继承实现(Java萌新篇) 拼手气红包-基于继承实现(Java萌新篇) 题目&#xff1a; 群主发拼手气红包&#xff0c;n名群员收红包&#xff1b; 实现群主随机发送n份总金额数目一定的红包&#xff0c;群员收到红包&#xff0c;然后输出提示信息&#xff1b; PS.该程序…

红外测试操作步骤_一种红外测试样品的制备方法与流程

本发明涉及分析测试的前处理领域,尤其是红外测试样品的制备方法。 背景技术: 红外光谱是现在最为常用的分析测试手段之一。通过红外光谱分析,不仅可以确定或推测样品的分子结构,还能够对某一特定物质进行定量检测,因此广泛应用于化学、材料、环保、生物等领域。卤化物压片…

时尚红蓝双色惊爆眼球,华为Mate 9玛瑙红/托帕蓝图赏

红色和蓝色是生活中经常看到的两种颜色&#xff0c;其中红色代表了热情冲动&#xff0c;蓝色代表了冷静平和&#xff0c;一个是暖色调&#xff0c;一个是冷色调&#xff0c;但却都是经久不衰的时尚色彩&#xff0c;也被广泛运用在很多知名品牌的产品设计上。 最近&#xff0c;已…

C++面向对象丨4. 文件操作

操作系统&#xff1a;Windows IDE&#xff1a;Visual Studio 2019 文章目录 1 文本文件1.1 写文件1.2 写文件实例1.3 读文件1.4 读文件实例 2 二进制文件2.1 写文件2.2 写文件实例2.2 读文件2.4 读文件实例 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会…

基于Python+OpenCV的视频字符化(深度学习+机器视觉)含全部工程源码

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境OpenCV环境 模块实现1. 视频读取及处理2. 色素块识别与替换3. 视频合成4. 操作系统上的实现 系统测试工程源代码下载其它资料下载 前言 本项目利用 OpenCV 提供的轻量、高效的 C类和 Python 接口&#xff0c;实…

布朗桥

了解布朗桥&#xff0c;先要知道布朗运动&#xff0c; 布朗运动可以定义为&#xff1a; {B(t),t≥0} 为标准布朗运动 其中 B(t) 是连续时间的随机过程 布朗桥 令 B(0)0 &#xff0c;在 B(0)B(1)0 的条件下&#xff0c;它的概率分布服从维纳过程 W(t) 的条件概率分布。 B0…

开发者的瑞士军刀Eolink,目测要火

大家好&#xff0c;我是 Jack。 想必大家都注意到了&#xff0c;近半年国产API管理工具火了起来。 趁着上周的假期&#xff0c;我也体验了下&#xff0c;国产软件卷起来&#xff0c;真是越来越好用了。 经过我的推荐&#xff0c;有不少小伙伴&#xff0c;都逐渐告别postman、…
最新文章