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

Re:这是我写的这个算法的加强版,哪位兄弟能告诉我错在哪里啊

Posted by yangjie at 2006-03-19 09:53:34 on Problem 2001
In Reply To:Re:谁能告诉我这个程序为什么错了 Posted by:chengmingvictor at 2005-08-01 11:37:02

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

int difference(string a,string b)
{
	for(int i = 0 ; i < a.length() ; i++)
	{
		if( a[i] != b[i])
			return i;
	}
	return i-1;
}
int main()
{
		string allString[1001];
		string temp[1001];
		map<string,string> prefix;
		int count(0);
		while( cin >> temp[count] )
		{
			allString[count] = temp[count];
			count++;
		}
        if(count > 2)
		{
					sort(allString , allString + count);

					int start = difference( allString[0] , allString[1] );
					int maxnum;
					if(allString[0] != allString[1])
					prefix[allString[0]] = allString[0].substr(0,start + 1);
					else
					{
					  start = 0;
					prefix[allString[0]] = allString[0].substr(0,start + 1);	
					  
					}

					for( int i = 1 ; i < count ; i++)
					{
						  if( start == allString[i-1].length() - 1 && allString[i] != allString[i-1])
							  start++;
						  if(allString[i-1][0] != allString[i][0])
							  start = 0;

						  if(allString[i] != allString[i+1])
							  maxnum = difference(allString[i],allString[i+1]);
						  else
							  maxnum = start;
						  prefix[ allString[i] ] = allString[i].substr(0,1+(start > maxnum?start:maxnum));
						  start = maxnum;
					}

					for(i = 0 ; i < count ; i++)
						cout << temp[i] <<' ' << prefix[temp[i]] << endl;
		}
		else
			cout << temp[0] << endl;

		return 0;
}


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