UVA
来源:互联网 发布:r18asmr软件 编辑:程序博客网 时间:2024/04/28 01:47
题目大意,给你一个字符串,求他的子串中有多少是回文的子串。方法,要用二维数组来做。如果用一维数组,则会超时#include <stdio.h>#include <stdlib.h>#include <string.h>#include <limits.h>#include <malloc.h>#include <ctype.h>#include <math.h>#include <string>#include <iostream>#include <algorithm>using namespace std;#include <stack>#include <queue>#include <vector>#include <deque>#include <set>#include <map>int main(){int t,cas,i,j,k;char a[1002];int data[1002][27];while(~scanf("%d",&t)){getchar();for(cas=1;cas<=t;cas++){memset(data,0,sizeof(data));gets(a);int len=strlen(a);data[0][a[0]-'a']++;for(i=1;i<len;i++){data[i][a[i]-'a'] = data[i-1][a[i]-'a']+1;for(j=0;j<26;j++){if(a[i]-'a' != j){data[i][j] = data[i-1][j];}}}记录在当前位置,每个字母出现的次数。int flag=0;int sum=0;for(i=0;i<len;i++){for(j=i+1;j<len;j++){for(k=0;k<26;k++)因为前面已经计算过了。所以在这里只要调用就可以了{if(i == 0){if(data[j][k]&1){flag++;if(flag == 2){break;}}}else{if((data[j][k]-data[i-1][k])&1){flag++;if(flag==2)break;}}}if(flag != 2)sum++;flag = 0;}}printf("Case %d: %d\n",cas,sum+len);}}return 0;}
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- Linux Shell 通配符、元字符、转义符使用实例介绍
- QTP自动化测试之使用外部.Net DLL实现与Telnet的交互
- UVA
- 导入SVN版本库,提示svnadmin: E000002: Can't open file
- 编译Android4.0.4常见的错误解决办法
- UVA
- NSUserDefault
- java 中ClassLoader的原理
- Object-C学习 继承 编译预处理
- iOS6.0下获取通讯录用户列表
- 函数笔记
- drawable文件夹详解
- 函数——作业
- 工作记录--linux文件系统