|
|
|
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;
}
}
}
评论