您的位置:首页 > 其它

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有几个。

思路:有了第二条信息就可以(当时没想到)得出 当一个字符串中出现的字母,只有一个字母出现奇数次 或者 是没有字母出现奇数次时 算一个有效的方案。

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: