蓝桥杯 手链样式 枚举
2016-03-18 20:47
495 查看
看到网上有人用的手算解法,还有相关论文。(⊙o⊙)…还是枚举适合我,节约脑力。
思路大概就是:
1、手链可以转动,所以存储时将字符串加倍,这样就可以找到转动后的情况。
2、手链可以翻转,所以再存储一下reverse的字符串。
3、枚举方法,直接next_permutation,简单粗暴。
结果:运算时间有点长,3s后出结果,1170。
麻烦看到这篇文章的小伙伴点个赞好么,csdn的文章阅读量不太对啊....
思路大概就是:
1、手链可以转动,所以存储时将字符串加倍,这样就可以找到转动后的情况。
2、手链可以翻转,所以再存储一下reverse的字符串。
3、枚举方法,直接next_permutation,简单粗暴。
#include <iostream> #include <algorithm> #include <string> #include <vector> using namespace std; vector<string> v; //存储已经找出的情况 int sum = 0; int main(){ string str = "aaabbbbccccc"; do{ vector<string>::iterator it; for(it=v.begin(); it != v.end(); 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); sum ++; }while(next_permutation(str.begin(), str.end())); cout << sum ; }
结果:运算时间有点长,3s后出结果,1170。
麻烦看到这篇文章的小伙伴点个赞好么,csdn的文章阅读量不太对啊....
相关文章推荐
- C#编程中枚举类型的使用教程
- 枚举的用法详细总结
- PHP中Enum(枚举)用法实例详解
- c#入门之枚举和结构体使用详解(控制台接收字符串以相反的方向输出)
- 理解C#中的枚举(简明易懂)
- C#枚举中的位运算权限分配浅谈
- C++基础入门教程(四):枚举和指针
- FileShare枚举的使用小结(文件读写锁)
- Java枚举类用法实例
- 枚举窗口句柄后关闭所有窗口示例
- javascript模拟枚举的简单实例
- 深入剖析JavaScript中的枚举功能
- 枚举和宏的区别详细解析
- 深入理解C#中的枚举
- C#实现获取枚举中元素个数的方法
- 结合C++11的新特性来解析C++中的枚举与联合
- java中枚举的详细使用介绍
- java枚举的使用示例
- Java枚举详解及使用实例(涵盖了所有典型用法)
- Java的枚举类型使用方法详解