Codeforces 667C Reberland Linguistics【DFS】
2016-05-01 17:13
441 查看
一道卡题意的题。
题目链接:
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; }
相关文章推荐
- Codeforces 667C Reberland Linguistics【DFS】
- Codeforces 667C Reberland Linguistics【DFS】
- ERROR! The server quit without updating PID file (/var/lib/mysql/service.pid).
- leetcode 063 Unique Paths II
- leetcode 062 Unique Paths
- Codeforces 667C Reberland Linguistics (DP)
- Java源码分析--StringBuffer/StringBuilder
- 让requirejs不自动添加.js后缀
- Encapsulation and Requiring Files
- Encapsulation and Requiring Files
- 96. Unique Binary Search Trees
- SNMP++ 01-SNMP request time out问题的解决
- 300. Longest Increasing Subsequence
- 2016 UESTC Training for Data Structures R - Japan CDOJ 383 树状数组 逆序对
- 2016 UESTC Training for Data Structures Q - 昊昊爱运动 II CDOJ 1259 线段树+bitset
- 2016 UESTC Training for Data Structures P - 浑身难受 CDOJ 1276 树状数组
- 2016 UESTC Training for Data Structures O - 卿学姐种美丽的花 CDOJ 1344 线段树/树状数组
- 2016 UESTC Training for Data Structures N - 秋实大哥搞算数 CDOJ 1074 栈 表达式求值
- 2016 UESTC Training for Data Structures M - 卿学姐失恋了Ⅱ CDOJ 1350 汉诺塔 模拟
- 2016 UESTC Training for Data Structures L - 郭大侠与苦恼 CDOJ 1284 map+启发式合并