题意:从给定的字符串中的任意一个位置进行分割,得到两个子串;其中子串为S1,其反串为S3,;子串S2,反串为S5。问任意两个子串组合有多少种方法?
但是有限制就是:子串不能和其反串组合。

//方法一:
其中涉及到unique的使用,这也是在看了大神使用uniuqe之后才使用的,也是不错。
unique():返回参数数组中所有不同的值,并按照从小到大排序(主要是为了去重)
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<set>
#include<cstdio>
#include<map>
#include<string.h>
using namespace std;
typedef long long ll;
const int maxx=1e3+10;
string s;
set<string>st;
int main(){int t;cin>>t;string s1,s2,s3,s5,s6[maxx];while(t--){cin>>s;getchar();int j=0;int len=s.length();for(int i=1;i<len;i++){s1=s.substr(0,i);s2=s.substr(i,len-i);s3=s1;s5=s2;reverse(s3.begin(),s3.end());reverse(s5.begin(),s5.end());s6[j++]=s1+s2; s6[j++]=s2+s1; s6[j++]=s5+s3; s6[j++]=s3+s5; s6[j++]=s1+s5; s6[j++]=s5+s1; s6[j++]=s2+s3; s6[j++]=s3+s2; }sort(s6,s6+j);int cnt=unique(s6,s6+j)-s6;cout<<cnt<<endl;}return 0;
}
方法二:(超时)
set的使用就不用讲了。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<set>
#include<cstdio>
#include<map>
#include<string.h>
using namespace std;
typedef long long ll;
string s;
set<string>st;
int main(){int t;cin>>t;string s1,s2,s3,s5,s6;while(t--){cin>>s;getchar();int len=s.length();for(int i=1;i<len;i++){s1=s.substr(0,i);s2=s.substr(i,len-i);s3=s1;s5=s2;reverse(s3.begin(),s3.end());reverse(s5.begin(),s5.end());s6=s1+s2; if(st.find(s6)==st.end()){st.insert(s6);}s6=s2+s1; if(st.find(s6)==st.end()){st.insert(s6);}s6=s5+s3; if(st.find(s6)==st.end()){st.insert(s6);}s6=s3+s5; if(st.find(s6)==st.end()){st.insert(s6);}s6=s1+s5; if(st.find(s6)==st.end()){st.insert(s6);}s6=s5+s1; if(st.find(s6)==st.end()){st.insert(s6);}s6=s2+s3; if(st.find(s6)==st.end()){st.insert(s6);}s6=s3+s2; if(st.find(s6)==st.end()){st.insert(s6);}}int size=st.size();cout<<size<<endl;st.clear();}return 0;
}

poj3007(set的应用)相关推荐

  1. POJ3007 Organize Your Train part II

    Hash表来做,key值,链地址法.key公式等于字符串中所有字符asc2码乘对应位数的和 需要的函数 1.将s拆分为s1,s2 2.反转字符串 3.俩字符串合并 4.计算k值 5.建立并生成hash ...

  2. poj-3007 Organize Your Train part II

    题意很好理解,看图都能懂,就不解释了.关键就在于训练计划上的分类,神马标准模板库的应用都是骗人的,不过小用一点也是能过的,不过时间就是800,900的.总之一点也不用c++库函数就稳稳的对.本人是用的 ...

  3. 做acm 需要学的算法

    做acm 需要学的算法 转一个搞ACM需要的掌握的算法.  要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来.  适合自己的才是好的,有的人不适合搞算法,喜欢系统架构,因此不要看到别人什 ...

  4. acm经典题Mark

    著名的北邮ACM推荐50题 POJ推荐50题 1.标记"难"和"稍难"的题目可以看看,思考一下,不做要求,当然有能力的同学可以直接切掉. 2.标记为A and ...

  5. 嗷嗷嗷,kuangbin大大博客上拉的题

    正在学(learning),未学(waiting),已学(cut  vovering) 初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj ...

  6. C++ ACM解题

    部分解题报告添加新内容,除了原有的"大致题意"和"解题思路"外, 新增"Source修正",因为原Source较模糊,这是为了帮助某些狂WA ...

  7. 假期ACM训练计划表

    OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: 一 ...

  8. [转载]acm进阶之路

    第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打  出来.  1.最短路(Floyd ...

  9. acm常见算法及例题

    1 acm常见算法及例题 2 3 初期: 4 一.基本算法: 5 (1)枚举. (poj1753,poj2965) 6 (2)贪心(poj1328,poj2109,poj2586) 7 (3)递归和分 ...

最新文章

  1. 【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )
  2. Interview:算法岗位面试—上海某公司算法岗位(偏图像算法,互联网科技行业)技术面试考点之区块链的TPS等问题
  3. Linux下python升级安装步骤
  4. CSS+JS灰色树型菜单导航代码
  5. Exception in thread main java.lang.NoClassDefFoundError: org/apache/tez/dag/api/TezConfiguration
  6. JSON.parse()、eval()和JSON.stringify()
  7. 深度学习(三十八)卷积神经网络入门学习(2.0)
  8. CMSIS-SVD Schema File Ver. 1.0
  9. 经典排序算法-MFC实现之3:冒泡排序
  10. 教你怎么短期内备考并通过PMP考试!
  11. android移动开发慕课版本_Android移动开发基础教程(慕课版)
  12. 【ML】机器学习(西瓜书)思维导图
  13. CMUX协议学习总结
  14. git创建版本库并提交文件
  15. 计算机基础知识学习顺序
  16. 系统重温Pandas笔记:(八)文本数据
  17. built a JNCIS LAB系列:Chapter 7 MPLS
  18. 【JAVASE】泛型基础
  19. 视频转语音,语音转文字
  20. Linux下查看网络设备类型

热门文章

  1. 爬虫之数据提取响应内容的分类
  2. nero结果,对应的分析。如下。
  3. 使用OpenCV4实现硬件级别加速
  4. AOI检测基本原理与设备构成
  5. 图像处理分类、一般流程与算法
  6. 基于OpenCV与tensorflow实现实时手势识别
  7. 实战 | 多种方法实现以图搜图
  8. 再次升级,985博士整理的71个OpenCV实战项目教程开放下载!
  9. HyperPocket:生成点云网络
  10. 深入探讨:视觉的目的是什么?