手链样式

小明有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 ;
}

最新文章

  1. 【CityHunter】基于LBS的AR体感游戏设计理念
  2. JDK 伪异步编程(线程池)
  3. innodb数据结构
  4. Aliasing 走样
  5. 获取任意可序列化对象的Xml字符串,方便在日志中查看任一所感兴趣的对象。
  6. BP神经网络算法学习
  7. Linux学习新篇——常用命令和快捷键总结
  8. 使用iframe从网页调起移动端应用
  9. sp.Net MVC4 + Oracle + EasyUI + Bootstrap2
  10. (中等) HDU 3265 Posters , 扫描线。
  11. click和onclick本质的区别
  12. idea中文乱码
  13. JS 最简单数组去重
  14. IIS 负载均衡
  15. URL中文编码
  16. Linux之JDK1.8的安装
  17. ArchLinux - 安装指南
  18. after the first ten days
  19. 【转】使用 Jmeter 做 Web 接口测试
  20. python作业三级菜单day1(第一周)

热门文章

  1. javaScript改变HTML
  2. Lightoj 1009 - Back to Underworld
  3. UVA11383 Golden Tiger Claw —— KM算法
  4. vb6转vb.net
  5. JFreeChart生成饼形图(3) (转自 JSP开发技术大全)
  6. [USACO 2017DEC] Haybale Feast
  7. 腾讯微博 JS-SDK接入
  8. 解决Linux主机上的 远程MySQL客户端无法连接的问题
  9. bzoj 2456: mode【瞎搞】
  10. SSM框架手动搭建