Calf Flac
来源:互联网 发布:设计算法需要考虑什么 编辑:程序博客网 时间:2024/06/06 05:11
题意:整个文件中的字符可以看成一个长的字符串,忽略其中除了字母之外的东西以及字母的大小写区别,求最长的回文的长度和内容
解题思路:
- 读入这个字符串,存入input_string中
- 对着个字符串进行裁剪,去除其中字母以外的内容,并且将其中的字母全部转换为小写,存与一个字符数组input_trim中。在处理的过程中用以个数组sheet记录下input_trim中每个字符在input_string中的位置
- 从最长的长度max_len开始,查找input_trim中是否存在这样长度的回文,如果没有则max_len递减,如果有则直接输出解决问题。(max_len取2000和input_trim长度的较小值)
- 最后要求输出最长回文的内容,根据前面的sheet数组可以很方便地查找到input_trim中符合要求的字符串在input_string中的起始点,从而输出结果
代码:
/*ID: zc.rene1LANG: CPROG: calfflac*/#include<stdio.h>#include<stdlib.h>#include<string.h>FILE *fin, *fout;char input_string[20000];int sheet[20000];int is_palindrome(char input_trim[], int start, int end){int ret=1;while(start<=end){if(input_trim[start]!=input_trim[end]){ret=0;break;}start++;end--;}return ret;}void find_longest_palindrome(char input_trim[], int index_trim){int max_len=(index_trim>2000)?2000:index_trim;int i, j;while(max_len-->0){for(i=0; i<=index_trim-max_len; i++){if(is_palindrome(input_trim, i, i+max_len-1)){fprintf(fout, "%d\n", max_len);for(j=sheet[i]; j<=sheet[i+max_len-1]; j++){fprintf(fout, "%c", input_string[j]);}fprintf(fout, "\n");return ;}}}}int main(void){fin=fopen("calfflac.in", "r");fout=fopen("calfflac.out", "w");char input_trim[20000];int i, index=0, index_trim=0;char in;while(fscanf(fin, "%c", &in)==1){input_string[index++]=in;if(isalpha(in)){sheet[index_trim]=(index-1);input_trim[index_trim++]=tolower(in);}}find_longest_palindrome(input_trim, index_trim);return 0;}
- Calf Flac
- Calf Flac
- Calf Flac
- Calf Flac
- Calf Flac
- Calf Flac
- Calf Flac
- Calf Flac(USACO)
- Chapter 1 Calf Flac
- USACO 1.3-Calf Flac
- Section 1.3 Calf Flac
- [USACO] Calf Flac
- usaco Calf Flac
- USACO 1.3 Calf Flac
- USACO 1.3 Calf Flac
- usaco Calf Flac
- USACO:Calf Flac
- USACO Calf Flac
- 广播的接收与U盘广播
- Outlook jump list cannot display task button
- C# 线程池
- 一个优秀windows C++程序员的知识体系
- 查找数组中第K大的值
- Calf Flac
- SVN版本库的迁移
- 黑马程序员-线程间操作无效: 从不是创建控件“txtbox1”的线程访问它。
- [Ruby学习总结]Ruby中的String
- A. Petya and Strings
- 让系统尽量不用swap
- uva 624 CD 01背包状态压缩记路径
- “黑马程序员”视频学习笔记之面向对象基础及调试问题
- Java虚拟机之连接模型