例题5-11 邮件传输代理的交互(The Letter Carrier's Rounds,ACM/ICPC World Finals 1999,UVa814)

本文主要是介绍例题5-11 邮件传输代理的交互(The Letter Carrier's Rounds,ACM/ICPC World Finals 1999,UVa814),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原题链接:https://vjudge.net/problem/UVA-814
分类:STL综合
备注:字符串以及STL容器的综合运用
前言:uDebug AndyRoswellD的数据没过,但是我没看懂他的输出的逻辑,难道有多个传输者?题目没这么写啊,好歹还是AC了。个人认为是他上传的数据有误。

代码如下:

#include<iostream>
#include<sstream>
#include<string>
#include<map>
#include<set>
#include<vector>
using namespace std;
map<string, set<string> >person;
set<string>adress;
void output(string s, vector<string>message) {stringstream ss(s); string sender, senddress;ss >> sender;int pos = sender.find('@');senddress = sender.substr(pos + 1);string tmp, dr;vector<string>recdress;vector<string>recpt;map<string, set<string> >match;while (ss >> tmp) {pos = tmp.find('@');dr = tmp.substr(pos + 1);if (!match.count(dr))recdress.push_back(dr);if (!match[dr].count(tmp)) {recpt.push_back(tmp);match[dr].insert(tmp);}}for (int i = 0; i < recdress.size(); i++) {cout << "Connection between " << senddress << " and " << recdress[i] << "\n";cout << "     HELO " << senddress << "\n     250\n     MAIL FROM:<" << sender << ">\n     250\n";int flag = 0;for (int j = 0; j < recpt.size(); j++) {if (match[recdress[i]].count(recpt[j])) {cout << "     RCPT TO:<" << recpt[j] << ">\n";pos = recpt[j].find('@');string tmp2 = recpt[j].substr(0, pos);if (person[recdress[i]].count(tmp2)) {cout << "     250\n";flag = 1;}else cout << "     550\n";}}if (flag) {cout << "     DATA\n     354\n";for (int k = 0; k < message.size(); k++)cout << "     " << message[k] << "\n";cout << "     .\n     250\n";}cout << "     QUIT\n     221\n";}
}
int main(void){int n;string s, pepo;while (cin >> s){if (s[0] == '*')break;cin >> s;adress.insert(s);cin >> n;while (n--) {cin >> pepo;person[s].insert(pepo);}}getchar();while (getline(cin,s)){if (s[0] == '*')break;string mess;cin >> mess;getchar();vector<string>message;while (getline(cin, mess)){if (mess[0] == '*')break;message.push_back(mess);}output(s, message);}return 0;
}

这篇关于例题5-11 邮件传输代理的交互(The Letter Carrier's Rounds,ACM/ICPC World Finals 1999,UVa814)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/899030

相关文章

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

Python与Java交互出现乱码的问题解决

《Python与Java交互出现乱码的问题解决》在现代软件开发中,跨语言系统的集成已经成为日常工作的一部分,特别是当Python和Java之间进行交互时,编码问题往往会成为导致数据传输错误、乱码以及难... 目录背景:为什么会出现乱码问题产生的场景解决方案:确保统一的UTF-8编码完整代码示例总结在现代软件

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客