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

总是WA,牛大们帮我看看,谢谢了

Posted by chaosjimmy at 2007-01-20 17:04:49 on Problem 1002
#include <string>
#include <list>
#include <iostream>

using namespace std;

string process(string s);

int main()
{


	list<string> lstr;//list store input strings
	string s;
    long linenum;  //store number of first line

	getline(cin,s);
	const char *str=s.c_str();
	linenum=atol(str);

	long i=0;
	while(i<linenum && getline(cin,s)) //read strings
	{
		lstr.push_back(process(s));// function process() is defined bellow
		++i;
	}

	lstr.sort();//sort strings follow ascending order

	list<long> llong;
	list<string> lstr1;

	list<string>::iterator str_it;

	for(str_it=lstr.begin();str_it!=lstr.end();)//delet strings which are same and counter 
	{                                           //they number .strings which store in the 
		long l=0;                          //lstr1.corresponding number store in llong.
	    string s=*str_it;

		while(str_it!=lstr.end() && s.compare(*str_it)==0)
		{
			++l;
			str_it=lstr.erase(str_it);
		}
		if(l>1)
		{
		    lstr1.push_back(s);
		    llong.push_back(l);
		}
	}

	list<long>::iterator lon_it;

	if(llong.empty())          //if llong is empty which means no two same strings
		cout<<"No duplicates."<<endl;
	else                       //output results follow the format
	{
     	lon_it=llong.begin();
	    str_it=lstr1.begin();
        while(str_it!=lstr1.end() && lon_it!=llong.end())
		{
		    cout<<(*str_it).substr(0,3)<<'-'<<(*str_it).substr(3,4)<<' '<<*lon_it<<endl;
	        ++str_it;
		    ++lon_it;
		}
	}	
	return 0;	
}

string process(string s)   //converts strings to a standard format like 1234567
{
	char map(char ch);
	string::iterator it;

	for(it=s.begin();it!=s.end();)
    {
		if(*it=='-')
			it=s.erase(it);
		else if(*it>='A' && *it<='Y')
		{
			*it=map(*it);
			++it;
		}
		else ++it;
	}
	return s;
}

char map(char ch)//mapping function
{
	if(ch=='A' || ch=='B' || ch=='C')
		return '2';
	else if(ch=='D' || ch=='E' || ch=='F')
		return '3';
	else if(ch=='G' || ch=='H' || ch=='I')
		return '4';
	else if(ch=='J' || ch=='K' || ch=='L')
		return '5';
	else if(ch=='M' || ch=='N' || ch=='O')
		return '6';
	else if(ch=='P' || ch=='R' || ch=='S')
		return '7';
	else if(ch=='T' || ch=='U' || ch=='V')
		return '8';
	else if(ch=='W' || ch=='X' || ch=='Y')
		return '9';
	else return 'e';
}

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