UVA 12718 Dromicpalin Substrings
2014-07-01 20:21
197 查看
UVA 12718 Dromicpalin Substrings
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4456 (外国OJ比较慢,请耐心等待)
题意:
Dromicpalin Substrings的定义:
1.该子串是回文的,如:madam,toot
2.子串中的字符是可以随意排列的,如:mmaad和madam一样。
3.子串在原字符中是连续的。
给你一串字符这样的Dromicpalin Substrings有几个。
思路:有了第二条信息就可以(当时没想到)得出 当一个字符串中出现的字母,只有一个字母出现奇数次 或者 是没有字母出现奇数次时 算一个有效的方案。
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4456 (外国OJ比较慢,请耐心等待)
题意:
Dromicpalin Substrings的定义:
1.该子串是回文的,如:madam,toot
2.子串中的字符是可以随意排列的,如:mmaad和madam一样。
3.子串在原字符中是连续的。
给你一串字符这样的Dromicpalin Substrings有几个。
思路:有了第二条信息就可以(当时没想到)得出 当一个字符串中出现的字母,只有一个字母出现奇数次 或者 是没有字母出现奇数次时 算一个有效的方案。
#include<stdio.h> #include<string.h> int main() { int cas; int t,len,count; char str[1010]; int vis[1010],i,j; while(scanf("%d",&t)!=EOF) { cas=1; while(t--) { scanf("%s",str); len=strlen(str); int ans=len; for(i=0;i<len;i++) { memset(vis,0,sizeof vis); int cnt=str[i]-'a'; vis[cnt]++; count=1; for(j=i+1;j<len;j++) { cnt=str[j]-'a'; vis[cnt]++; if(vis[cnt]%2==1) count++; else count--; if(count==1 || count==0)//在两个相同的字母之间,出现奇数次的字母只能存在一个或没有 才是合法的 ans++; } } printf("Case %d: %d\n",cas++,ans); } } return 0; }
相关文章推荐
- UVa 12718 Dromicpalin Substrings (暴力)
- UVA 12718 Dromicpalin Substrings
- UVA 12718 Dromicpalin Substrings(寻找字符串连续子串的回文)
- UVALive 6659 Dromicpalin Substrings (递推 + 暴力枚举)
- UVALive 6659 Dromicpalin Substrings
- UVALive 6659 Dromicpalin Substrings 枚举判断
- Dromicpalin Substrings
- uva 12718 2013Dhaka J
- UVa 10829 L-Gap Substrings (后缀数组+rmq)
- UVA 10829 L-Gap Substrings(后缀数组好题)
- UVA 10829 L-Gap Substrings
- uva10829 - L-Gap Substrings 后缀数组+RMQ
- L-Gap Substrings(uva 10829)
- UVa 10829 - L-Gap Substrings (后缀数组)
- UVA 10829 L-Gap Substrings 后缀数组
- UVA 10829 L-Gap Substrings(后缀数组+枚举区间优化)
- UVA 10829 L-Gap Substrings (后缀数组+RMQ)
- 【UVA10829】 L-Gap Substrings (后缀数组)
- UVA 10829 L-Gap Substrings(后缀数组)
- UVA 10829 - L-Gap Substrings(后缀数组)