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

花了2+个小时终于AC了,无奈

Posted by dinysirius at 2009-03-07 14:50:33 on Problem 1583
注意:
1.处理好单词之间只有标点没有空格的情况
2.注意检测文件尾

实现方法:STL

附上代码
#include <iostream>
#include <string>
#include <cstdlib>
#include <map>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

int max = 0;

void u(map <string,int> &m,string &word){
	
	string no = ",.;\'`\"()/:- ";
	
	string :: iterator iter = word.begin(),ii = word.begin();
	int b = 0,e = 0;
	string :: size_type pos = 0;
	while(true){
	
		while(iter != word.end() && no.find(*iter,pos) == string :: npos){
		
			*iter = tolower(*iter);
			++e;
			++iter;	
		}	

		string tmp(ii,ii + e - b);
		
		if(tmp != "")
			m[tmp] ++;
		if(::max < m[tmp])
			::max = m[tmp];
			
		if(iter == word.end())
			break;
		
		ii = ++ iter;
		b = ++ e;
	}
	
	return;
}

int main(){
	
	string word;
	vector<string>last;
	map <string,int>total;
	
//	ifstream fin("input.txt");
//	ofstream fout("output.txt");
	while(cin >> word){

		u(total,word);

		//char ch = fin.peek();
		char ch = cin.peek();
		
		if(ch == '\n' || ch == ' ')
			cin.get();			
	}	

	cout << ::max << " occurrences" << endl;
	
	map<string,int>::iterator iter = total.begin();
	
	while(iter != total.end()){
		
		if(iter -> second == ::max)
			//fout << iter -> first << endl;
			last.push_back(iter -> first);
		++iter;	
	}
	sort(last.begin(),last.end());
	
	for(int i = 0 ; i < last.size() ; i ++){
		
		//fout << last[i] << endl; 
		cout << last[i] << endl;		
	}
	
//	system("pause");
	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