厦大oj1438简单题、map

本文详细介绍了使用C++处理文件数据,包括读取、统计和排序等操作,并通过实例展示了如何利用C++实现高效的数据处理与排序算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>  
#include <map>  
#include <string>  
#include <fstream>  
using namespace std;  

int main(){  
	map<string, int> tongji;  
	map<string, int>::iterator it;  
	int shuru1 = 0;  
	cin>>shuru1;  
	ifstream ifs("shuju.txt");//  
	//ifs>>shuru1;//  
	string shuru2;  
	int count = 3 * shuru1;  
	string rank[3];  
	while(count--){  
		cin>>shuru2;  
		//ifs>>shuru2;//  
		it = tongji.find(shuru2);  
		if(it == tongji.end()){  
			tongji[shuru2] = 1;  
			//tongji.insert(pair<string, int>(shuru2, 1));  
		}else{  
			tongji[shuru2]++;  
		}  
	}  
	int max_num;  
	string max_str;  
	for(int i = 0; i < 3; i++){  
		max_num = 0;  
		for(it = tongji.begin(); it != tongji.end(); it++){  
			if(it->second > max_num){  
				max_str = it->first;  
				max_num = it->second;  
			}else if(it->second == max_num){  
				if(it->first < max_str){  
					max_str = it->first;  
				}  
			}  
		}  
		if(i == 2){  
			rank[2] = max_str;  
			tongji.erase(max_str);  
		}else if(i == 0){  
			rank[0] = max_str;  
			tongji.erase(max_str);  
		}else if(i == 1){  
			rank[1] = max_str;  
			tongji.erase(max_str);  
		}  
	}  
	if(rank[0] > rank[1]){  
		string temp;  
		temp = rank[0];  
		rank[0] = rank[1];  
		rank[1] = temp;  
	}  
	if(rank[0] > rank[2]){  
		string temp;  
		temp = rank[0];  
		rank[0] = rank[2];  
		rank[2] = temp;  
	}  
	if(rank[1] > rank[2]){  
		string temp;  
		temp = rank[1];  
		rank[1] = rank[2];  
		rank[2] = temp;  
	}  
	cout<<rank[0]<<" "<<rank[1]<<" "<<rank[2];  
	//system("pause");  
	return 0;  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值