|
|
|
|
C |
A |
R |
|
|
|
|
C |
A |
R |
T |
|
|
|
|
|
|
|
C |
A |
R |
T |
|
|
|
|
|
|
|
C |
A |
R |
T |
|
|
|
|
|
|
|
C |
A |
R |
T |
|
|
|
|
|
|
|
C |
A |
R |
T |
|
|
|
|
|
|
|
C |
A |
R |
T |
字符串a不动,把字符串b动.
第一个测试数据(CAR CART)总共就可以得到上面的情况。变量j记录循环。变量i开始其实是表示字符串b最后一个字符的位置。
if(j>strlen(a)-1) i=strlen(a)-1;把i移动到能和字符串a比较的位置。
while(i>=0)防止i在b中出界。
for(i=2;i<=strlen(a);i++) { while(w%i==0 && s2%i==0) { s2=s2/i; w=w/i; } }用来化减分式。
//附整理下的代码.
#include <iostream.h>#include <string.h>int main(){int i,j;char a[100],b[100];int sum,sum1;int s2,w1,w2,w;while(cin>>a){ if(strcmp(a,"-1")==0) return 0; cin>>b; sum=0; for(j=0;j<strlen(a)+strlen(b);j++) { sum1=0; i=j; if(j>strlen(a)-1) i=strlen(a)-1; while(i>=0) { if(a[i]==b[strlen(b)-j+i]) sum1++; i--; } if(sum<sum1) sum=sum1; } cout<<"appx("<<a<<","<<b<<") = "; w1=strlen(a); w2=strlen(b); w=w1+w2; s2=2*sum; if(s2==0) cout<<"0\n"; else if(s2==w) cout<<"1\n"; else { for(i=2;i<=strlen(a);i++) { while(w%i==0 && s2%i==0) { s2=s2/i; w=w/i; } } cout<<s2<<"/"<<w<<endl; }}}
评论