程式碼:
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int a1,b1,num=0,c=0,k=0,num2=0;
char a[1000],b[1000];
while(cin>>a>>b)
{num=0;c=0;k=0;
a1=strlen(a);
b1=strlen(b);
if(a1>b1) swap(a1,b1);
for(int i=0; i<=a1-1; i++)//開始正向判斷
{
for(int j=k; j<=b1-1; j++)
{
if(a[i]==b[j]) {num++;k=j+1;break;}
}
}
num2=0;k=b1-1;
for(int i=a1-1; i>=0; i--)//開始倒向判斷
{
for(int j=k; j>=0; j--)
{
if(a[i]==b[j]) {num2++;k=j-1;break;}
}
}
if(num>num2) cout<<num<<endl;
else cout<<num2<<endl;
}
system("pause");
return 0;
}
不知是哪裡出問題= = 我的答案:1
正確答案:9 ????
不知有甚麼更好的演算法呢?
謝謝