称号:字符串统计回文子的数量。
分析:dp,暴力。因为数据是小,直接暴力可以解决。
说明:(UVa最终评出800该)。
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
char str[82];
char ans[3200][82];
int main()
{
while (~scanf("%s",str)) {
int count = 0,len = strlen(str);
for (int i = 1 ; i <= len ; ++ i)
for (int s = 0 ; s < len ; ++ s) {
int flag = 1;
for (int t = s+i-1 ; t >= s ; -- t)
if (str[s+s+i-1-t] != str[t]) {
flag = 0;
break;
}
if (flag) {
for (int j = 0 ; j < i; ++ j)
ans[count][j] = str[s+j];
ans[count][i] = 0;
int same = 0;
for (int j = 0 ; j < count ; ++ j)
if (!strcmp(ans[j], ans[count])) {
same = 1;
break;
}
if (!same) count ++;
}
}
printf("The string \'%s\' contains %d palindromes.\n",str,count);
/*
printf("The %d unique palindromes in \'boy\' are",count);
for (int i = 0 ; i < count-1 ; ++ i) {
printf(" \'%s\'",ans[i]);
if (i < count-2)
printf(",");
else printf(" and ");
}
printf("\'%s\'.\n\n",ans[count-1]);
*/
}
return 0;
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4726602.html,如需转载请自行联系原作者