问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

算法竞赛入门经典习题3-9子序列(uva10340)

发布网友 发布时间:2022-04-10 23:17

我来回答

2个回答

懂视网 时间:2022-04-11 03:38

3 How to compete in ACM ICPC,Peter,peter@neerc.ifmo.ru How to win ACM ICPC,Michael,michael@neerc.ifmo.ru Notes from ACM ICPC champion,Michael,michael@neerc.ifmo.ru 2 3 1,Peter,peter@neerc.ifmo.ru 2,Michael,michael@neerc.ifmo.ru

(二)样例输出

NO
2 3  //这两行中出现数据冗余
2 3  //冗余出现在上面两行的这两列中
YES

二:代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <sstream>
#include <set>
#include <map>
#include <vector>
#include <algorithm>

using namespace std;

vector<string> split(string source, string pattern)
{
 vector<string> res;
 int spos = 0, epos, p_len = pattern.length() - 1,s_len = source.length()-1;
 source += pattern;
 char col = ‘1‘;
 while (spos<s_len && (epos = source.find(pattern,spos))&&epos!=string::npos)
 {
 stringstream stream;
 stream << col++;  //在末尾加上列号,可以防止出现因为不同列数据重复现象
 res.push_back((source.substr(spos, epos - spos)).append(stream.str()));
 spos = epos + 1;
 }
 return res;
}

int main()
{
 FILE *fp = freopen("data5_9.in", "r", stdin);
 freopen("data5_9.out", "w", stdout);

 string line;
 int row, col;

 while ((cin >> row)&&row!=0)
 {
 //获取行列数
 cin >> col;

 vector<string> str_vec;
 set<string> str_set;
 map<string, int> str_map;
 vector<int> res; //保存两行,一列重复

 for (int r = 1; r <= row; r++)
 {
  getchar();
  getline(cin, line); //重点使用
  
  str_vec = split(line, ","); //由于没有split字符串分割函数,使用find和substr进行分割
  
  vector<string>::iterator iter = str_vec.begin(); //进行迭代插入
  int c = 1;
  for (; iter != str_vec.end(); iter++)
  {
  if (!str_set.count(*iter))
  {
   str_set.insert(*iter);
   str_map[*iter] = r * 10 + c++;
  }
  else //出现同一列重复
  {
   int r_r = (str_map[*iter] / 10)*10 + r;  //23表示第2,3行重复
   res.push_back(r_r*10+c++); //将重复的行列添加到res映射中
  }
  }
 }

 if (res.empty()) //进行结果输出
  cout << "YES" << endl;
 else
 {
  cout << "NO" << endl;
  int r_r = res.front();
  cout << r_r / 100 << ‘ ‘ << r_r / 10 % 10 << endl; //输出行
  for (vector<int>::iterator it = res.begin(); it != res.end(); it++)
  cout << *it % 10 << " "; //输出列
  cout << endl;
 }
 }

 freopen("CON", "r", stdin);
 freopen("CON", "w", stdout);
 return 0;
}

 

算法习题---5.9数据库(Uva1592)

标签:不同   int   cin   iostream   begin   检测   算法   append   mpi   

热心网友 时间:2022-04-11 00:46

你判断成功之后j还要再加1追问为什么?不用吧?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 为什么说我的不能登录网页版微信?- 问一问 oppor9sk屏幕碎了一点点 换个屏幕多少钱? 做微商的10个理由有哪些? 微商要如何来发展? 本科毕业证有防伪标签吗? 求助:为了你的帐号安全,此已不允许登录网页微信。 向老师请假要什么理由好? 微商兴起的原因是什么?前景如何 求教:学生向老师请假、有哪些经典的理由?? 毕业证本本有防假标志吗? 如何辨别毕业证真伪? 显示为了我的账号安全,此不能登陆网页微信是为什么啊? 做一个篮球教练,应该具有哪些知识? 我是非法学专业的本科生,如果在北京参加司法考试,第四卷分数会比地方上评分低吗? 微商兴起的原因 篮球教练的基本能力 有关金坷垃,音乐的事情 我在北京考司法考试,如果领证的话是在北京领吗?谢谢 网上盛传的葛炮、金坷垃这样的视频是用什么工具做的? 在北京参加司法考试是不是比其他省份难呀 同学在山东考的大部分都通过了 几个在北京的总也考不过 同学水平 每天脱发正常吗? 什么品牌的智能手表好?销售员推荐了OPPO手表,可信吗? oppo手机breeno如何关闭自动定时睡眠 蔚蓝锂芯前景好吗?蔚蓝锂芯收盘价多少钱?蔚蓝锂芯股票行情如何? 每天脱发严重怎么办? 人每天都会掉头发但掉多少才是正常的? 每天掉发多少才是正常? 每天掉头发掉多少算正常? 每天掉头发怎么办 天天大量掉发是怎么回事,该怎么办,急求答案!! 公司电话区号非短号怎么填? 每天都掉头发怎么办? 邵阳公司的区号怎么填? 燃气热水器 热水循环到底有没有必要? 郑州三力制冷设备工程有限公司怎么样? 汕头市立兴制冷设备工程有限公司怎么样? 中冷制冷设备股份有限公司怎么样? 杭州大冷制冷设备有限公司怎么样? 北京市实力制冷设备公司怎么样? 谁知道冷库安装,制冷设备还有冷冻设备哪个公司好啊。