15年第六届蓝桥杯第七题_手链样式_(stl_string)
2024-08-26 06:26:14
手链样式
小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。
他想用它们串成一圈作为手链,送给女朋友。
现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?
请你提交该整数。不要填写任何多余的内容或说明性的文字。
结果填空不需要太在意时间复杂度,几秒十几秒出都能接受。
这个题,主要运用stl中的string.find(str),next_permutation(str.begin(),str.end()),reverse(str.begin,str.end())。
在一个vector中存下已经出现过的排列,每一个排列先在vector中查找是否已存在该排列,若不存在,则res++,并将str+str(可任意转动)和reverse(str.begin(),str.end()) (可任意翻转) 压入vector。这样的话,比较花时间,但是可以接受。
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
using namespace std; vector<string> vec;
int main()
{
string str="AAABBBBCCCCC";
int res=;
do
{
int flag=;
for(int i=;i<vec.size();i++)
{
if(vec[i].find(str)!=string::npos)
{
flag=;
break;
}
}
if(flag)
{
res++;
string tmp=str+str;
vec.push_back(tmp);
reverse(tmp.begin(),tmp.end());
vec.push_back(tmp);
}
}while(next_permutation(str.begin(),str.end()));
cout<<res<<endl;
return ;
}
最新文章
- 【CityHunter】基于LBS的AR体感游戏设计理念
- JDK 伪异步编程(线程池)
- innodb数据结构
- Aliasing 走样
- 获取任意可序列化对象的Xml字符串,方便在日志中查看任一所感兴趣的对象。
- BP神经网络算法学习
- Linux学习新篇——常用命令和快捷键总结
- 使用iframe从网页调起移动端应用
- sp.Net MVC4 + Oracle + EasyUI + Bootstrap2
- (中等) HDU 3265 Posters , 扫描线。
- click和onclick本质的区别
- idea中文乱码
- JS 最简单数组去重
- IIS 负载均衡
- URL中文编码
- Linux之JDK1.8的安装
- ArchLinux - 安装指南
- after the first ten days
- 【转】使用 Jmeter 做 Web 接口测试
- python作业三级菜单day1(第一周)