例题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

相关文章

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

proxy代理解决vue中跨域问题

vue.config.js module.exports = {...// webpack-dev-server 相关配置devServer: {host: '0.0.0.0',port: port,open: true,proxy: {'/api': {target: `https://vfadmin.insistence.tech/prod-api`,changeOrigin: true,p

Kubernetes 之 kubelet 与 CRI、CNI 的交互过程

序言 当一个新的 Pod 被提交创建之后,Kubelet、CRI、CNI 这三个组件之间进行了哪些交互? Kubelet -> CRI -> CNI 如上图所示: Kubelet 从 kube-api-server 处监听到有新的 pod 被调度到了自己的节点且需要创建。Kubelet 创建 sandbox 并配置好 Pod 的环境,其中包括: Kubelet 通过 gRPC 调用 C

Linux如何做ssh反向代理

SSH反向代理是一种通过SSH协议实现的安全远程访问方式,它允许客户端通过SSH连接到一台具有公网IP的代理服务器,然后这台代理服务器再将请求转发给内部网络中的目标主机。以下是实现SSH反向代理的步骤: 一、准备工作 确保服务器配置: 内网服务器(目标主机)和外网服务器(代理服务器)都安装了SSH服务,并且能够通过SSH进行互相访问。内网服务器上的服务(如Web服务、数据库服务等)需要在本地

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

将你的github仓库设置为web代理

将你的github仓库设置为web代理 废话不多说,直接上步骤 废话不多说,直接上步骤 创建一个仓库,上传静态web。 2. 设置仓库的 page 1)点击 “Settings” 如图设置