POJ 1580 && HDU 1306 String Matching(水~)
2015-08-25 10:38
507 查看
Description
现定义两个仅由大写字母组成的字符串的匹配程度如下:将某一字符串的首字符与另一字符串的某一字符对齐,然后后面的字符也一一对齐,直至某一字符串的串尾为止。对于每一组对齐的两个字符,若这两个字符相等,则计数。最后计算这个计数的2倍,与两串总长度的最大比值
Input
多组用例,每组用例占一行,包括两个字符串,以-1结束输入
Output
对于每组用例,输出两个字符串的最大匹配数与两串总长度的比值
Sample Input
CAR CART
TURKEY CHICKEN
MONEY POVERTY
ROUGH PESKY
A A
-1
Sample Output
appx(CAR,CART) = 6/7
appx(TURKEY,CHICKEN) = 4/13
appx(MONEY,POVERTY) = 1/3
appx(ROUGH,PESKY) = 0
appx(A,A) = 1
Solution
简单字符串处理,暴力枚举两串匹配的首字母,不断更新最大匹配值即可,最后的答案需要对最大匹配值和两串总长进行辗转相除
Code
现定义两个仅由大写字母组成的字符串的匹配程度如下:将某一字符串的首字符与另一字符串的某一字符对齐,然后后面的字符也一一对齐,直至某一字符串的串尾为止。对于每一组对齐的两个字符,若这两个字符相等,则计数。最后计算这个计数的2倍,与两串总长度的最大比值
Input
多组用例,每组用例占一行,包括两个字符串,以-1结束输入
Output
对于每组用例,输出两个字符串的最大匹配数与两串总长度的比值
Sample Input
CAR CART
TURKEY CHICKEN
MONEY POVERTY
ROUGH PESKY
A A
-1
Sample Output
appx(CAR,CART) = 6/7
appx(TURKEY,CHICKEN) = 4/13
appx(MONEY,POVERTY) = 1/3
appx(ROUGH,PESKY) = 0
appx(A,A) = 1
Solution
简单字符串处理,暴力枚举两串匹配的首字母,不断更新最大匹配值即可,最后的答案需要对最大匹配值和两串总长进行辗转相除
Code
#include<stdio.h> #include<string.h> #define max(x,y) (x>y?x:y) #define min(x,y) (x<y?x:y) int gcd(int x,int y) { if(x%y!=0) return gcd(y,x%y); return y; } int main() { int i,j,k,len1,len2,a,b,res,max; char c,c1[1000],c2[1000]; while(1) { scanf("%s%s",c1,c2); if(strcmp(c1,"-1")==0)//输入结束条件 break; len1=strlen(c1); len2=strlen(c2); max=0;//最大匹配数 for(i=0;i<len1;i++)//枚举两串首字母 for(j=0;j<len2;j++) { res=0;//每次记录匹配数前初始化为0 for(k=0;k<min(len1-i,len2-j);k++) if(c1[k+i]==c2[k+j]) res++; max=max(max,res); } if(max==0||2*max-len1-len2==0)//没有匹配或者完全匹配则不用辗转相除 printf("appx(%s,%s) = %d\n",c1,c2,2*max/(len1+len2)); else { a=2*max; b=len1+len2; i=gcd(a,b);//辗转相除 a/=i; b/=i; printf("appx(%s,%s) = %d/%d\n",c1,c2,a,b); } } }
相关文章推荐
- ViewGroup$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams错误提示
- Tomcat7 域名访问配置二
- 【codevs1026】逃跑的拉尔夫,广搜的胜利
- hdu 2426 Interesting Housing Problem(KM)
- hdu 3622 Bomb Game(2-sat 二分答案)
- MySQL grant 语法的详细解析
- win7与ubuntu双系统学习笔记
- Jboss EAP:native management API学习
- 对C#泛型实例化对像
- Mysql-SSL加密
- win10 10525怎么升级?win10 Build 10525升级安装方法
- C语言中的strdup()函数和其与strcpy()函数的区别
- 关于orcad生成netlist时出现Conflicting values:错误
- 接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?
- VMware模拟机CentOS的网络设置
- [leetcode] 144.Binary Tree Preorder Traversal
- 调用百度客户端导航
- WatchKit(二):WKInterfaceController生命周期、控制器、控件布局
- vc 判断当前用户是否在管理员组以及是否SYSTEM权限运行
- 【linux命令与工具】ethtool命令