POJ总结(3080)
来源:互联网 发布:淘宝旺铺怎么装修 编辑:程序博客网 时间:2024/04/29 01:37
POJ3080
题目思路
这是一个多个字符串的最长公共子串问题,使用的是暴力的思路。先描述正确的思路吧!
首先找到最短的那个字符串,对该字符串的每一个子串(长度递减),判断他是不是其他字符串的子串
如果其他字符串都包含这个子串,那么该子串即为最长公共子串。
如果存在某串不包含这个子串,将子串的长度减一,再次重复判断。
注意点
1.题目要求是最长公共子串,那么子串从长到短更优
2.题目要求“如果有多个长度相同的子串,那么按字母表顺序输出第一个”。注意不是出现的第一个,因此需要将所有长度相同的最长字串进行比较。这里使用strcmp函数即可。
3.题目要求长度小于3输出”no significant commonalities\n”,我当时不注意审题,看成小于等于三
4.我在做题时出现了wrong-answer,但是利用随机生成的input并没有出现任何问题。于是输入了特殊的字符串组,各字符串没有公共子串,发现自己的output有问题。
5.还有一个很严重的问题,做题一定要看清题目,想清楚再做。一上手做的就是最长公共子序列问题,把问题复杂化了。而且在扩展到多个子串时尝试使用两层迭代。。。。而且实现过程中还有问题
代码
#include<stdio.h>#include<string.h>bool comp(char a[][61],int num,char* b);int main(){ char a[11][61]={'\0'}; int M=0; scanf("%d",&M); for(int n=0;n<M;n++) { int N,minlength=100,flag=0; int mark=0; int i=0,j=0; scanf("%d",&N); for(i=0;i<N;i++) { scanf("%s",a[i]); int alength=strlen(a[i]); if(alength<minlength) { minlength=alength; flag=i; } } for(j=minlength;j>=1;j--) { char final[61]="ZZZZ"; for(int m=0;m<=minlength-j;m++) { char re[61]=""; for(int k=0;k<j;k++) { re[k]=a[flag][k+m]; } if(comp(a,N,re)==true) { if(strlen(re)<3) { printf("no significant commonalities\n"); mark=1; break; } else { if(strcmp(final,re)==1) { strcpy(final,re); } } mark=1; } } if(strcmp(final,"ZZZZ")!=0) { printf("%s\n",final); } if(mark==1) break; } if(mark==0) { printf("no significant commonalities\n"); } } return 0;}bool comp(char a[][61],int num,char* b){ int flag[10]={0}; for(int k=0;k<num;k++) { int alength=strlen(a[k]); int blength=strlen(b); int diff=alength-blength; for(int i=0;i<=diff;i++) { flag[k]=0; for(int j=0;j<blength;j++) { if(a[k][i+j]!=b[j]) { flag[k]=1; break; } } if(flag[k]==0) { break; } } } for(int j=0;j<num;j++) { if(flag[j]!=0) { return false; } } return true;}
阅读全文
0 0
- POJ总结(3080)
- 总结POJ
- POJ搜索题目总结
- Poj KMP 总结
- poj字符串总结
- POJ 3159 candies总结
- POJ水题总结
- poj 网络流 总结
- poj dp总结
- POJ 线段树总结
- poj字符串总结
- POJ dp 总结
- poj 动态规划总结
- POJ问题总结
- POJ 2800 解题总结
- POJ 做题总结
- POJ 1001 总结
- POJ总结(1035)-Java
- 文件I/O实现拷贝功能
- Session用法案例 -->实现简单购物车功能(实际项目可能不会这么使用)
- Train TF models in Python and Invoke models in Java
- JVM 垃圾回收器介绍
- 舒适的前端开发环境是怎样一种体验?
- POJ总结(3080)
- sublime 快捷键
- Ubuntu16.04将.png/.jpg图片转换为.eps/.pdf格式
- HTTP协议详解
- PAT乙级1065. 单身狗(25)
- 图片悬浮实例
- idea破解
- 从中医角度体检健身标准
- 关于顺序容器的insert函数