ZOJ 1170 String Matching
2013-03-19 20:30
302 查看
#include <cstdio> #include <cstring> #include <cstdlib> #include <vector> #include <cmath> #include <iostream> #include <algorithm> #include <functional> #include <string> using namespace std; char str1[10000],str2[10000]; int match(int as,int ae,int bs,int be) { int con=0; int i,j; for(i=as,j=bs; i<ae&&j<be; i++,j++) { if(str1[i]==str2[j]) con++; } return con; } int gcd(int a,int b) { if(a==0) return b; else return b==0?a:gcd(b,a%b); } int main() { while(scanf("%s",str1)!=EOF) { if(strcmp(str1,"-1")==0) break; scanf("%s",str2); int maxm=0; int len1=strlen(str1); int len2=strlen(str2); for(int i=0; i<len1; i++) { int res=match(i,len1,0,len2); if(maxm<res) maxm=res; } for(int i=0; i<len1; i++) { int res=match(0,len1,i,len2); if(maxm<res) maxm=res; } if(maxm==0) printf("appx(%s,%s) = 0\n",str1,str2); else { maxm=maxm*2; int minn=gcd(maxm,len2+len1); if(maxm==len2+len1) printf("appx(%s,%s) = %d\n",str1,str2,(len2+len1)/minn); else { printf("appx(%s,%s) = %d/%d\n",str1,str2,maxm/minn,(len2+len1)/minn); } } } return 0 ; }
相关文章推荐
- ZOJ-1170
- zoj_1170
- ZOJ-3594 Sexagenary Cycle【简单模拟】
- ZOJ 1074 To the Max
- ZOJ 3471 Most Powerful(状压DP)
- ZOJ 1610 Count the Colors(线段树——区间更新)(成段染色)
- zoj 2972
- ZOJ 2864 Catch the thief
- ZOJ 3323Somali Pirates
- ZOJ 3964 Yet Another Game of Stones (博弈)
- zoj 3203
- ZOJ 3761 Easy billiards 月赛E DFS
- ZOJ Problem Set - 3326||An Awful Problem
- ZOJ - 3960 What Kind of Friends Are You?(浙江第14届省赛)
- zoj 3610
- zoj 3757&&3758
- ZOJ Problem Set - 1037||Gridland
- ZOJ-3963-Heap Partition(贪心)(STL)
- ZOJ1395 POJ1300 Door Man
- ZOJ 1203 最小生成树