uva 11127(暴力)
来源:互联网 发布:反称矩阵的性质 编辑:程序博客网 时间:2024/06/07 02:39
题意:给出一个字符串,包括0、1、*,其中×是可以替换成0或者1的,如果字符串的某个子串S有SSS这样的连续重复3次出现,不是Triple-free串,问给出的字符串可以形成多少个非Triple-free串。
题解:因为串长度最多31,所以可以暴力枚举每一位,边枚举边判断。
#include <stdio.h>#include <string.h>const int N = 35;char str[N], str2[N];int n;long long res;bool judge(int cur) { for (int i = 1; i * 3 <= (cur + 1); i++) { int e = cur - i * 3, cnt2 = 0; for (int j = cur; j > cur - i; j--) { int cnt = 0; for (int k = j; k > e; k -= i) if (str2[j] != str2[k]) break; else cnt++; if (cnt == 3) cnt2++; else break; } if (cnt2 == i) return false; } return true;}void dfs(int cur) { if (cur == n) { res++; return; } if (cur == 0 || cur == 1) { if (str[cur] == '0' || str[cur] == '1') { str2[cur] = str[cur]; dfs(cur + 1); } else { str2[cur] = '0'; dfs(cur + 1); str2[cur] = '1'; dfs(cur + 1); } return; } str2[cur] = '0'; if (judge(cur)) { if (str[cur] == '0' || str[cur] == '*') dfs(cur + 1); } str2[cur] = '1'; if (judge(cur)) { if (str[cur] == '1' || str[cur] == '*') dfs(cur + 1); }}int main() { int cas = 1; while (scanf("%d", &n) == 1 && n) { scanf("%s", str); res = 0; dfs(0); printf("Case %d: %lld\n", cas++, res); } return 0;}
0 0
- uva 11127(暴力)
- UVA 185(暴力DFS)
- uva 654 - Ratio(暴力)
- uva 225 - Golygons(暴力)
- uva 11520 暴力
- uva 1509 - Leet(暴力)
- UVA 1509 Leet(暴力)
- uva 10167(暴力求解)
- uva 216(暴力求解)
- uva 10344(暴力求解)
- uva 10012(暴力求解)
- uva 165(暴力求解)
- uva 167(暴力求解)
- uva 10123(暴力求解)
- uva 529(暴力求解)
- uva 565(暴力+枚举)
- uva 305 - Joseph(暴力)
- uva 11218(暴力求解)
- C++学习笔记——函数
- Attempt to invoke virtual method 'com.google.android.gms.maps.GoogleMap com.google.android.gms.maps.
- OpenLayers开发:简单示例
- hive on tez遇到问题
- 关于RelativeLayout设置垂直居中对齐不起作用的问题
- uva 11127(暴力)
- poj 3667
- Redis配置文件详解
- poj 3067 交叉对 树状数组求逆序数
- [Thu, 9 Jul 2015 ~ Tue, 14 Jul 2015] Deep Learning in arxiv
- java + struts2 分页技术
- HorizontalDragLayout-模仿QQ客户端的Item滑动删除
- 记录
- 屏幕录像专家注册机破解方法