题目

jxtxzzw和好朋友去探险,在山洞里jxtxzzw发现了许多古诗,他很兴奋地呼唤同伴过来,用相机把这些古诗拍下来。每个人都选了一部分进行拍照。

回到学校以后,所有人把相机中的照片导出,保存在电脑。

这时jxtxzzw发现,竟然当时没有让伙伴们按照顺序拍照。

现在这些照片根本就不是有序的,所以这些古代诗歌的碎片完全连不成一个整体。

好在现在有一个线索,在相邻的两张照片中,一定有一句是重复的。分别出现在两张碎片的头和尾。

例如上图是完整的原文,被拍成了 2 张照片,两张照片各保存了 4 行,如下图。

思路

方法1


用了两个map和两个数组,

map<string, int> headMap;  // headMap[head]=i:第i张照片的第一行为head
map<string, int> tailMap;
string headArr[1001];  // headArr[i]=head:第i张照片的第一行为head
string tailArr[1001];

查找的时候颠来倒去一下就行。感觉这样的思路还是有些绕的,待改进。

代码

#include<bits/stdc++.h>
using namespace std;map<string, int> headMap;  // headMap[head]=i:第i张照片的第一行为head
map<string, int> tailMap;
string headArr[1001];  // headArr[i]=head:第i张照片的第一行为head
string tailArr[1001];
vector<string> v;
int seq[1001] = {0};  // 正确的照片顺序int main()
{for(int i=0;i<1001;i++){headArr[i]="no";tailArr[i]="no";}int p, l; cin>>p>>l;for(int i = 0; i <= p*l; i++){string str;getline(cin,str);v.push_back(str);}for(int i = 0; i < p; i++){string head = v[i*l+1];string tail = v[(i+1)*l];// cout<<head<<' '<<tail<<endl;headMap[head] = i;tailMap[tail] = i;headArr[i] = head;tailArr[i] = tail;}// /***************************************/
//     cout<<"************"<<endl;
//     for(int i = 0; i < p; i++)
//     {//         cout<<headArr[i]<<endl;
//     }
//     cout<<"************"<<endl;
//     for(int i = 0; i < p; i++)
//     {//         cout<<tailArr[i]<<endl;
//     }
//     cout<<"************"<<endl;
// /***************************************/int idx = 0;int flag = 0;  // 是否已经找到第一张照片string nowHead;while (idx<p){// 找第一张照片if(!flag){for(map<string, int>::iterator it = headMap.begin(); it!=headMap.end(); it++){nowHead = it->first;if(tailMap.count(nowHead)==0)// 该head不是任何照片的tail,即该照片为剩余照片中的第一张{flag = 1;seq[idx] = it->second;idx++;break;}}}// cout<<nowHead<<endl;int headIdx = headMap[nowHead];  // 这张照片的序号string nowTail = tailArr[headIdx];  // 这张照片的最后一行int nextIdx = headMap[nowTail];  // 最后一行作为首行的照片序号,即下一张照片seq[idx] = nextIdx;idx++;nowHead = headArr[nextIdx];}int j = 0;for(int i = 0; i < p; i++){// int idx = seq[i];// cout<<'*'<<idx<<endl;for(j = l*seq[i]+1; j < (seq[i]+1)*l; j++)cout<<v[j]<<endl;}cout<<v[j]<<endl;system("pause");return 0;
}

2021秋季《数据结构》_EOJ 1059. 恢复古诗相关推荐

  1. 某大学2021秋季学期Java期末考试范围概述

    某大学2021秋季学期Java期末考试范围概述 Scope of inspection Not test Edition Scope of inspection 第四章 类与对象(三大特征必须掌握,以 ...

  2. 李沐分享斯坦福2021秋季新课:实用机器学习

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:新智元 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 李沐 ...

  3. 美国计算机研究生留学签证时间,美国大学研究生录取结果,美国研究生院录取时间和流程一览!附2021秋季截止日期...

    对于去美国留学申请读书的同学们而言,美国名校往往更受青睐和欢迎.美国大学研究生录取结果,美国留学申请,美国名校可以给你带来什么,下面就跟着小编详细了解下,什么网站可以查询美国大学研究生往年录取信息?谢 ...

  4. 更新第十三讲 2021秋季班学而思培优 二年级三年级四年级五年级数学

    [同步更新第13讲]2021秋季班学而思培优 小学二年级勤思数学 何俞霖 小学三年级勤思数学 王睿 小学四年级勤思数学 王睿 小学五年级勤思数学 刘震宇

  5. 微软 2021 秋季发布会汇总

    微软在 2021 秋季发布会上发布了 8 款设备. 以下是汇总: Surface Pro 8: 边框最窄的 Surface Pro 系列,屏幕由 12.3 英寸增加到 13 英寸,120Hz 高刷新率 ...

  6. 美国计算机硕士申请截止,美国大学研究生录取通知时间,美国研究生院录取时间和流程一览!附2021秋季截止日期...

    对于去美国留学申请读书的同学们而言,美国名校往往更受青睐和欢迎.美国大学研究生录取通知时间,美国留学申请,美国名校可以给你带来什么,下面就跟着小编详细了解下,普渡大学收到录取通知书的时间?,盘点美国研 ...

  7. 三次蝉联!Stratifyd在G2 2021秋季报告中再获“高成长者”荣誉

     点击上方蓝字关注我们  High Performer 近日,全球领先的商业软件评测机构G2公布了2021秋季Grid报告,Stratifyd凭借杰出的客户满意度和市场表现上榜G2文本分析软件类别的& ...

  8. 南开大学 软件学院 计算机网络 2021秋季 复习

    南开大学 软件学院 计算机网络 2021秋季 复习 这是本人根据张圣林老师本学期给的复习ppt总结的,仅供参考 第一章 引言 为什么要选择五层分层 1. 网络协议以及协议目的 为进行网络中的数据交换而 ...

  9. 诺瓦科技2021秋季校园招聘——渤海大学交流群建立啦

    诺瓦科技2021秋季校园招聘 诺瓦科技2021秋季校园招聘--渤海大学交流群建立啦 我是西安诺瓦科技校园招聘2021渤海大学校园大使.我公司是西安市优秀企业,成立于2008年,核心成员来自西安电子科技 ...

最新文章

  1. 数据结构-线性表的顺序结构
  2. BizTalk 开发小技巧-Custom XSLT复杂mapping的简单实现
  3. 服务器系统摁c,如何系统有效学习c服务器开发
  4. rsyslog日志管理+LogAnalyzer
  5. 五万块钱买什么车好_10万预算买什么车好?看空间、动力和配置
  6. angular 接入 IdentityServer4
  7. 【图论】【模板】静态仙人掌(luogu 5236)
  8. 自定义组件--创建mxml组件
  9. 用samba来创建windows下的文件共享
  10. 阿里研发效能数据知多少
  11. OpenCV精进之路(十三):角点检测
  12. RFC 6528 翻译
  13. foobar2000 for mac(多功能音频播放器)
  14. linux挂载40t硬盘,Centos支持40T磁盘阵列MD1200
  15. word中行与行间距大
  16. ChemDraw 2D与ChemBio 3D之间的信息转换
  17. 小旋风asp服务器出错
  18. Excel里面方框打勾
  19. 猪八戒网冲刺港交所上市:2021年GMV达84亿元,朱明跃持股28%
  20. PL3368C-ASEMI低功耗电源IC选PL3368C

热门文章

  1. linux实现学生信息管理系统,Linux下基于shell脚本实现学生信息管理系统
  2. Mysql的case when then实现报表分组不同字段显示不同结果打勾
  3. 钉钉直播视频下载方法分享地瓜网络技术
  4. 解决百度网盘内容失效问题
  5. python 对于程序异常的处理
  6. 经由过程百度地图API,将百度坐标转换成GPS经纬度
  7. DCloud-MUI:代码块
  8. 热乎的面经——百炼成钢
  9. windows 内存过高解决办法
  10. 30个酷毙的交互式网站(HTML5+CSS3)