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

哪位大牛给帮忙看看,用stl怎么老是超时?用纯c也是超时啊,郁闷

Posted by shuaihujun at 2007-12-25 12:16:54 on Problem 1002
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
	char c[24] = {'2', '2', '2', '3', '3', '3', '4', '4', '4', '5', '5', '5', '6', '6', '6', '7', '7', '7', '8', '8', '8', '9', '9', '9'};
	vector<string> str;
	str.reserve(1000);
	double num;
	cin >> num;
	string str1, str2;
	for(int i = 0; i < num; i ++)
	{
		cin >> str1;
		for(int j = 0; j < str1.length(); j ++)
		{
			if((str1[j] >= 65)&&(str1[j] <= 80))
				str2.insert(str2.end(), c[str1[j] - 65]);
			else if((str1[j] >= 82)&&(str1[j] <= 89))
				str2.insert(str2.end(), c[str1[j] - 66]);
			else if((str1[j] >= 48)&&(str1[j] <= 57))
				str2.insert(str2.end(), str1[j]);
		}
		str.push_back(str2);
		str1.erase(0, str1.length());
		str2.erase(0, str2.length());
	}
	sort(str.begin(), str.end());
	bool Y = false;
	for(vector<string>::iterator k = str.begin(); k < str.end(); )
	{
		int count = 0;
		vector<string>::iterator l = k + 1;
		while((l < str.end())&&(*k == *l))
		{
			Y = true;
			count ++;
			k ++;
			l ++;	
		}
		if(count != 0)
		{
			string s1 = *k;
			for(int m = 0; m < 7; m ++)
			{
				if(m == 2)
				{
					printf("%c", s1[m]);
					printf("-");
				}
				else
					printf("%c", s1[m]);
			}
			printf(" %d\n", count + 1);
		}
		k = l;
	}
	if(Y == false)
		printf("No duplicates.\n");
	
	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