Codeforces 667C Reberland Linguistics【DFS】
来源:互联网 发布:东莞广电网络官网 编辑:程序博客网 时间:2024/06/06 02:40
一道卡题意的题。
题目链接:
http://codeforces.com/problemset/problem/667/C
题意:
一个串可以看成一个长度大于4的根,加上其后面的若干个相邻(in a row)不同的长度为2或3的子串组成。给定字符串,问你有多少种不同的子串,并按字典序输出。
分析:
很容易想到dfs的做法,注意剪枝的地方,只有在合理的情况下才标记这种情况。对于每个子串直接放到set里面就好了。
代码:
#include<cstring>#include<set>#include<iostream>using namespace std;const int maxn = 1e4 + 5;string s;set<string>res;int tot = 0;int vis[4][maxn];void dfs(int cnt, int endd, int pa){ if(endd - cnt < 4||vis[cnt][endd]) return; string t; bool flg = true; for(int i = 0; i < cnt ; i++){ t += s[endd - cnt + i + 1]; if(pa != cnt || (pa == cnt && s[endd - cnt + i + 1] != s[endd + i + 1])) flg = false; } if(!flg){ vis[cnt][endd] = true; res.insert(t); dfs(2, endd - cnt, cnt); dfs(3, endd - cnt, cnt); }}int main (void){ ios::sync_with_stdio(false); cin>>s; int len = s.length() ; dfs(2, len - 1, 0); dfs(3, len - 1, 0); cout<<res.size()<<endl; set<string>::iterator i; for(i = res.begin(); i != res.end(); i++){ cout<<*i<<endl; } return 0;}
0 0
- Codeforces 667C Reberland Linguistics【DFS】
- Codeforces 667C Reberland Linguistics (DP)
- Codeforces 667C Reberland Linguistics 【dp】
- 【16.67%】【codeforces 667C】Reberland Linguistics
- Codeforces 667C Reberland Linguistics dp+set
- Codeforces 667C Reberland Linguistics 【dp】
- 667C - Reberland Linguistics【dp】
- Codeforces Round #349 (Div. 2) C. Reberland Linguistics
- Codeforces Round #349 (Div. 2) C. Reberland Linguistics 【DP】
- Codeforces Round #349 (Div. 2) C. Reberland Linguistics DP
- CodeForces 666A Reberland Linguistics(DP)
- CodeForces 666A. Reberland Linguistics【DP】
- Codeforces #349 Div2 C Reberland Linguistics(twice in a row)
- Codeforces #349 div1 A. Reberland Linguistics 模拟 递推
- Codeforces Round #349 (Div. 1) A. Reberland Linguistics 动态规划
- codeforces_667C. Reberland Linguistics(dp+set)
- 记忆化搜索 Codeforces666A Reberland Linguistics
- Codeforces 744C【DFS】
- Marklogic学习 由浅入深(7)—— Marklogic应用开发指引
- android 5.x—Tinting着色和Clipping裁剪
- linux shell命令行选项与参数用法详解
- LeetCode|Word Pattern
- Volley框架的使用介绍
- Codeforces 667C Reberland Linguistics【DFS】
- 安卓java.lang.IllegalStateException: The specified child already has a parent.解决方案
- 《Vehicle Detection in High-Resolution Aerial Images Based on Fast Sparse Representation ...》论文笔记
- Android图片压缩方法总结
- Java中Filter、Servlet、Listener的学习
- UVa 120 Stacks of Flapjacks
- BZOJ 3670 [Noi2014]动物园
- 使用keepalive+lvs要注意的问题
- 超级简单的Android Studio jni 实现(无需命令行)