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