POj 1580(字符串处理)
来源:互联网 发布:知否什么时候上映 湖南 编辑:程序博客网 时间:2024/06/07 03:24
题意:比较两个字符串,位置相同的记录,可以移动比较求最大的位置相同数。样例给的很明确。
最开始只从一边移动比较,后来发现AAAB,BAAA样例,才明白。
刚开始开了四个字符串组:
#include<stdio.h>#include<string.h>int main(){ char a[100],b[100],c[100],d[100]; while(scanf("%s",a) != EOF) { if(strcmp(a,"-1") == 0) break; else scanf("%s",b); if(strlen(a) < strlen(b)) { strcpy(c,b); strcpy(d,a); } else { strcpy(c,a); strcpy(d,b); } int lentha = strlen(c); int lenthb = strlen(d); int same = 0,s = 0; for(int i = 0;i < lentha; i++) { s = 0; for(int j = 0;j < lenthb && c[j+i] != '\0'; j++) if(c[j + i] == d[j]) s++; if(s > same) same = s; } for(int i = 0;i < lenthb; i++) { s = 0; for(int j = 0;j < lentha && d[j+i] != '\0'; j++) if(d[j + i] == c[j]) s++; if(s > same) same = s; } if(same == 0) printf("appx(%s,%s) = 0\n",a,b); else if(same*2 == lentha + lenthb) printf("appx(%s,%s) = 1\n",a,b); else { int yueshu = 1; same *= 2; int sum = lentha + lenthb; for(int i = 2;i <= same; i++) { if(sum%i == 0 && same%i == 0) yueshu = i; } printf("appx(%s,%s) = %d/%d\n",a,b,same/yueshu,sum/yueshu); } } return 0;}可以简化:
#include<stdio.h>#include<string.h>int main(){ char a[100],b[100]; while(scanf("%s",a) != EOF) { if(strcmp(a,"-1") == 0) break; else scanf("%s",b); int lentha = strlen(a); int lenthb = strlen(b); int same = 0,s = 0; for(int i = 0;i < lentha; i++) //需要两次不同方向的遍历,第一次 { s = 0; for(int j = 0;j < lenthb && a[j+i] != '\0'; j++) if(a[j + i] == b[j]) s++; if(s > same) same = s; } for(int i = 0;i < lenthb; i++) //第二次 { s = 0; for(int j = 0;j < lentha && b[j+i] != '\0'; j++) if(b[j + i] == a[j]) s++; if(s > same) same = s; } if(same == 0) printf("appx(%s,%s) = 0\n",a,b); else if(same*2 == lentha + lenthb) printf("appx(%s,%s) = 1\n",a,b); else { int yueshu = 1; same *= 2; int sum = lentha + lenthb; for(int i = 2;i <= same; i++) //求公约数 { if(sum%i == 0 && same%i == 0) yueshu = i; } printf("appx(%s,%s) = %d/%d\n",a,b,same/yueshu,sum/yueshu); } } return 0;}
0 0
- POj 1580(字符串处理)
- POJ 1002(字符串处理)
- poj 1580 String Matching 【字符串处理】
- POJ 1750 Dictionary (字符串处理)
- poj 1035 Spell checker(字符串处理)
- POJ 1035 Spell checker(字符串处理)
- POJ 2256 Artificial Intelligence?(字符串处理)
- POJ: Surprising Strings(map、字符串处理)
- POJ 1575 (字符串处理)
- poj 1035 字符串处理
- POJ 1002 电话号码字符串处理
- poj 2895-字符串的处理
- POJ 1068 Parencodings (字符串处理)
- POJ 2271 HTML (字符串处理)
- poj 1002 电话号码\字符串处理
- POJ 1016 Numbers That Count(字符串处理)
- poj 1504 Adding Reversed Numbers(简单字符串的处理)
- POJ 3267-The Cow Lexicon(DP处理字符串)
- POJ 2771 Guardian of Decency【最大独立团】
- LeetCode-328.Odd Even Linked List
- oracle_3 数据操作
- 分享下多年积累的对JAVA程序员成长之路的总结
- 进制溢出
- POj 1580(字符串处理)
- python 抓取网页数据
- Lua语法学习(一)
- 关于python csv文件打开错误:_csv.Error: line contains NULL byte
- leetcode No201. Bitwise AND of Numbers Range
- Hibenate-注解
- 趣学 C 语言(十三)—— 标准输入输出重定向
- Java 读取properties配置文件
- C++的标准命名空间使用