AOJ0528 Common Sub-String

文字列をずらしてくらべて最大値更新していけば解ける

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main(){
	string a,b;
	int crtl,alen,blen,ans;
	while (cin >> a){
		cin >> b;
		ans = 0;
		alen = a.size();
		blen = b.size();
		for(int i = 0; i < alen; i++){
			b = " " + b;
			b = b + " ";
		}
		for(int i = 0; i < alen + blen; i++){
			crtl = 0;
			for(int j = 0; j < alen; j++){
				if(a[j]==b[i+j]) crtl++;
				else crtl = 0;
				ans = max(crtl,ans);
			}
		}
		cout << ans << endl;
	}
	return 0;
}