以下の内容はhttps://torus711.hatenablog.com/entry/20130710/p2より取得しました。


TopCoder SRM 584, Division 2, Level 1 : TopFox

概要

二つの文字列が与えられる。
それぞれの文字列の空でないプレフィックスを s, t としたとき、s + t によって作られる文字列の総数を求めよ。

解法

実際に全通り生成して数を数えます。
部分文字列の取り出しには string::substr を使い、重複なく数える部分では set に入れて set::size をとると楽です。

コード

using namespace std;

#define REP( i, m, n ) for ( int i = (int)( m ); i < (int)( n ); ++i )

class TopFox
{
public:
	int possibleHandles( string familyName, string givenName )
	{
		set<string> res;
		REP( i, 0, familyName.size() )
		{
			REP( j, 0, givenName.size() )
			{
				res.insert( familyName.substr( 0, i + 1 ) + givenName.substr( 0, j + 1 ) );
			}
		}
		return res.size();
	}
}



以上の内容はhttps://torus711.hatenablog.com/entry/20130710/p2より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14