Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

AC,贴个递归代码

Posted by bergkamp at 2009-05-07 01:43:22 on Problem 2250
#include <iostream>
#include <string>
#include <vector>
#include <memory.h>
#include <algorithm>
using namespace std;
int dp[1000][1000];
int b[1000][1000];
vector <string> seq;
vector <string> s1, s2;
int lcs( int i, int j )
{
	if ( i == 0 && j >= 0 ) 
		return 0;
	else if ( j == 0 && i >= 0 )
		return 0;
	else
	{
		if ( s1[i] == s2[j] ) 
		{
			b[i][j] = 0;
			if ( dp[i-1][j-1] == -1 )
			{
				dp[i-1][j-1] = lcs( i-1, j-1 );
			}
			return dp[i-1][j-1]+1;
		}
		else
		{
			if ( dp[i][j-1] == -1 ) dp[i][j-1] = lcs( i, j-1 );
			if ( dp[i-1][j] == -1 ) dp[i-1][j] = lcs( i-1, j );
			if ( dp[i][j-1] > dp[i-1][j] )
			{
				dp[i][j] = dp[i][j-1];
				b[i][j] = 2;
			}
			else
			{
				dp[i][j] = dp[i-1][j];
				b[i][j] = 1;
			}
			return dp[i][j];
		}
	}
}
void print_lcs ( int i, int j )
{
	if ( i == 0 || j == 0 ) return;
	if ( b[i][j] == 0 )
	{
		print_lcs ( i-1, j-1 );
		cout<<s1[i]<<" ";
	}
	else if ( b[i][j] == 1 ) print_lcs ( i-1, j );
	else print_lcs ( i, j-1 );
}
int main()
{
	int i, j, step = 1, clr = 0;
	string s;
	s1.push_back("1");
	s2.push_back("2");
	while ( cin>>s )
	{
		if ( step == 1 )
		{
			if ( s != "#" )
			{
				s1.push_back( s );
			}
			else
			{
				step = 2;
			}
		}
		else
		{
			if ( s != "#" )
			{
				s2.push_back( s );
			}
			else
			{
				step = 1;
				seq.clear();
				memset ( dp, -1, sizeof(int)*1000000 );
				memset ( b,  -1, sizeof(int)*1000000 );
				lcs( s1.size()-1, s2.size()-1 );
				print_lcs( s1.size()-1, s2.size()-1 );
				cout<<endl;
				s1.clear();
				s2.clear();
				s1.push_back("1");
				s2.push_back("2");
			}
		}
	}
	return 1;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator