阿里巴巴内推编程测验题目

题目:


思路:

在网上跟大家交流后,才知道自己漏看了题目,后来想了想,现将思路贴出来,供大家交流

目的:最多可以取出多少个能够组成嵌套集

如果存在一个子嵌套集,而新增加的一个二段模式与子嵌套集的某个二段模式冲突(不相互嵌套),它虽然不能加入该嵌套子集,
但是它却可以和该子集中不冲突的其他二段模式组成子集,所以很难处理。因此,从这个角度来思考,太过于复杂。

从上面的思路中我们可以得到一些有用的结论:针对存在的一个子嵌套集,新的二段模式的加入,可以生成新的子嵌套集,也就
是造成分支;进一步我们可以认为,一个二段模式最多可以生成一个分支,而且一个分支主要是因为某个二段模式与其他嵌套集
冲突造成的,也就是一个二段模式可以对应一个嵌套集;N个二段模式最多组成N个独立的嵌套集。


算法流程:
1、初始N个嵌套集,分别包含编号0~N-1二段模式
2、针对某个二段模式,遍历查看是否可以满足加入嵌套集的条件(两两相互嵌套,而且该二段模式之前不存在)
   满足的话,将其加入
3、找出最大的嵌套集

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <deque>
#include <cassert>
#include <map>
#include <algorithm>using namespace std;class Interval
{
public:explicit Interval(size_t left, size_t right): mLeft(left),mRight(right){assert(left <= right);}size_t left() const{return mLeft;}size_t right() const{return mRight;}/添加Interval(){};Interval(const Interval &a);Interval &operator = (const Interval &a);private:size_t mLeft;size_t mRight;
};//
Interval::Interval(const Interval &a)
{this->mLeft = a.mLeft;this->mRight = a.mRight;
}
Interval &Interval::operator =(const Interval &a)
{this->mLeft = a.mLeft;this->mRight = a.mRight;return *this;
}
/inline bool operator<(const Interval& a, const Interval& b)
{return a.right() < b.left();
}class TwoInterval
{
public:explicit TwoInterval(const Interval& left, const Interval& right): mLeft(left),mRight(right){assert(left < right);}const Interval& left() const{return mLeft;}const Interval& right() const{return mRight;}/添加TwoInterval(){};TwoInterval(const TwoInterval &a);TwoInterval &operator = (const TwoInterval &a);private:Interval mLeft;Interval mRight;
};
//
TwoInterval::TwoInterval(const TwoInterval &a)
{this->mLeft = a.mLeft;this->mRight = a.mRight;
}
TwoInterval &TwoInterval::operator=(const TwoInterval &a)
{this->mLeft = a.mLeft;this->mRight = a.mRight;return *this;
}
/inline bool within(const TwoInterval& a, const TwoInterval& b)
{return b.left() < a.left() && a.right() < b.right();
}void input(vector<TwoInterval>& twos)
{int m = 0;{string s;getline(cin, s);istringstream is(s);is >> m;}for (int i = 0; i < m; ++i) {string s;getline(cin, s);istringstream is(s);size_t a, b, c, d;is >> a >> b >> c >> d;Interval left(a, b);Interval right(c, d);twos.emplace_back(left, right);}
}// ====== 填入你自己的逻辑 ========/********************************/
/*
目的:最多可以取出多少个能够组成嵌套集思路:如果存在一个子嵌套集,而新增加的一个二段模式与子嵌套集的某个二段模式冲突(不相互嵌套),它虽然不能加入该嵌套子集,
但是它却可以和该子集中不冲突的其他二段模式组成子集,所以很难处理。因此,从这个角度来思考,太过于复杂。从上面的思路中我们可以得到一些有用的结论:针对存在的一个子嵌套集,新的二段模式的加入,可以生成新的子嵌套集,也就
是造成分支;进一步我们可以认为,一个二段模式最多可以生成一个分支,而且一个分支主要是因为某个二段模式与其他嵌套集
冲突造成的,也就是一个二段模式可以对应一个嵌套集;N个二段模式最多组成N个独立的嵌套集。算法流程:
1、初始N个嵌套集,分别包含编号0~N-1二段模式
2、针对某个二段模式,遍历查看是否可以满足加入嵌套集的条件(两两相互嵌套,而且该二段模式之前不存在)满足的话,将其加入
3、找出最大的嵌套集*/
/********************************/inline bool operator==(const Interval& a, const Interval& b)
{return (a.right() == b.right()) && (a.left() == b.left());
}inline bool operator==(const TwoInterval& a, const TwoInterval& b)
{return (a.right() == b.right()) && (a.left() == b.left());
}bool confl(const TwoInterval& a, const TwoInterval& b)
{if (!(within(a, b) || within(b, a))) return true;if (a == b) return true;return false;
}bool add(vector<TwoInterval> &a, TwoInterval b)
{for (TwoInterval ti : a){if (confl(ti,b)){return false;}}a.push_back(b);return true;
}int intussusception(vector<TwoInterval>& two2)
{int len = two2.size();if (len < 2) return len;int max = 0;vector<vector<TwoInterval> > res(len);for (int i = 0; i < len; i++){res[i].push_back(two2[i]);}for (int i = 0; i < len; i++){for (int j = 0; j < len; j++){add(res[j], two2[i]);}}for (int i = 0; i < len; i++){if (res[i].size()>max){max = res[i].size();}}return max;
}// ====== 结束 ========int main() {vector<TwoInterval> twos;input(twos);cout << intussusception(twos) << endl;return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19338.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试4年,费时8个月,入职阿里,涨薪14K,可算是熬出头了····

前言 你的努力&#xff0c;终将成就无可替代的自己 本科毕业后就一直从事测试的工作&#xff0c;和多数人一样&#xff0c;最开始从事功能测试&#xff08;所谓的点点点&#xff09;的工作&#xff0c;看着自己的同学一步一步往上走&#xff0c;自己还是在原地踏步&#xff0c;…

三战阿里测试岗,成功上岸,面试才是测试员涨薪真正的拦路虎...

第一次面试阿里记得是挂在技术面上&#xff0c;当时也是技术不扎实&#xff0c;准备的不充分&#xff0c;面试官出的面试题确实把我问的一头雾水&#xff0c;还没结束我就已经知道我挂了这次面试。 第二次面试&#xff0c;我准备的特别充分&#xff0c;提前刷了半个月的面试题…

四面阿里,成功入职阿里测试开发,分享我的真实面试题

闲话少叙 直接上干货 鉴于篇幅所限&#xff0c;这里不放答案&#xff0c;有需要的朋友可以评论区自取 1. 请自我介绍一下(需简单清楚的表述自已的基本情况&#xff0c;在这过程中要展现出自信&#xff0c;对工作有激情&#xff0c;上进&#xff0c;好学) 2. 平时工作中是怎么去…

真是太卷了,阿里面试了7轮(5年经验,拿下P7岗offer)

前言 今年的大环境非常差&#xff0c;互联网企业裁员的现象比往年更严重了&#xff0c;可今年刚好是我的第一个“五年计划”截止的时间点&#xff0c;说什么也不能够耽搁了&#xff0c;所以早早准备的跳槽也在疫情好转之后开始进行了。但是&#xff0c;不得不说&#xff0c;这…

阿里巴巴内推一面过程

阿里巴巴内推一面过程 引言正文第一部分第二部分第三部分总结 结束语 引言 一面是有个人给我打的电话跟我约了一个面试时间&#xff0c;他们人真的很好&#xff0c;是按你的时间来&#xff0c;如果有事就可以往后延。然后我约了今天晚上7点半&#xff0c;于是就开始了我的一面…

5年了,终于入职阿里测试岗位,直接涨薪30K...

前言 本科毕业后就一直从事软件测试的工作&#xff0c;和多数人一样&#xff0c;最开始从事功能测试的工作&#xff0c;看着自己的同学一步一步往上走&#xff0c;自己还是在原地踏步&#xff0c;说实话这不是自己想要的状态。 一年半后开始沪漂生活&#xff0c;又摸爬滚打了…

简单分享,阿里巴巴测试岗4轮面经(已拿34K+ offer)

没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;改变命运只能依靠努力幸运&#xff0c;但如果你不够幸运&#xff0c;那就只能拉高努力的占比。 2022年7月&#xff0c;我有幸成为了阿里巴巴的一名测试工程师&#xff0c;从外包辞职了历经…

【软件测试笔试题】阿里巴巴(中国)网络技术有限公司

小编热衷于收集整理资源&#xff0c;记录踩坑到爬坑的过程。希望能把自己所学&#xff0c;实际工作中使用的技术、学习方法、心得及踩过的一些坑&#xff0c;记录下来。也希望想做软件测试的你一样&#xff0c;通过我的分享可以少走一些弯路&#xff0c;可以形成一套自己的方法…

和年薪30W的阿里测试员聊过后,才知道自己一直在打杂...

前几天和一个朋友聊面试&#xff0c;他说上个月同时拿到了腾讯和阿里的offer&#xff0c;最后选择了阿里。 阿里内部将员工一共分为了14个等级&#xff0c;P6是资深工程师&#xff0c;P7是技术专家。 其中P6和P7就是一个分水岭了&#xff0c;P6是最接近P7的不持股员工&#x…

秋招|阿里测试开发岗面经(一共七次面试)

三月份的时候投了阿里的实习&#xff0c;然后基本上是一周面一次&#xff0c;前前后后一个月。实习通过了&#xff0c;但是后面因为有事&#xff0c;所以没能去成暑期实习&#xff0c;部门leader人很好&#xff0c;说是可以在秋招的时候再补上终面&#xff0c;于是就有了一共七…

五月最近一次面试,被阿里P8测开虐惨了...

都说金三银四涨薪季&#xff0c;我是着急忙慌的准备简历——5年软件测试经验&#xff0c;可独立测试大型产品项目&#xff0c;熟悉项目测试流程...薪资要求&#xff1f;5年测试经验起码能要个20K吧 我加班肝了一页半简历&#xff0c;投出去一周&#xff0c;面试电话倒是不少&a…

面试中如何才能拿到阿里 P7 的职级

阿里 P7 有多香&#xff1f; 大家谈到阿里 P7&#xff0c;第一反应可能就是年薪百万&#xff0c;我们先看一下阿里的职级体系。 P7 一般薪水在 70-100 万之间&#xff0c;超过 100 万的屈指可数&#xff0c;除非你是阿里 5 年以上的老 P7&#xff0c;薪资构成包括现金和股票&a…

阿里巴巴社招内推,简历直达Leader,略过 HR筛选,流程快,效率高

目录 内推步骤 本人内推优势 福利介绍 答疑 内推步骤 招聘官网&#xff1a;阿里巴巴集团招聘官网 &#xff0c;挑选意向岗位请加w&#xff0c;x&#xff0c;&#xff08;Amarao0729&#xff09;&#xff0c;需要备注阿里社招内推姓名&#xff0c;将简历和岗位链接发给我最…

视觉版ChatGPT来了!MSRA全华人团队打造,微软16年老将领衔

来源&#xff1a;量子位 ChatGPT会画画了&#xff01; 问它&#xff1a;能生成一张猫片给我吗&#xff1f; 立刻连文带图全有了。 还能根据新的文字指令调整图片&#xff1a;把猫换成狗。 同时也看得懂图、有理解能力。 比如发一张图给它&#xff0c;然后问摩托是什么颜色&…

微软又一开源力作!专门针对老旧照片

点击上方“逆锋起笔”&#xff0c;公众号回复 pdf 领取大佬们推荐的学习资料开源最前线(ID:OpenSourceTop) 猿妹整编 综合自&#xff1a;https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life、http://raywzy.com/Old_Photo/ 微软研究团队万紫宁、张波等人开发了一种…

WorkPlus AI助理正式上线!为企业打造定制化的AI私有助理

毋庸置疑&#xff0c;ChatGPT的应用充满无限的想象空间。但对于企业来说&#xff0c;使用时面临的最核心的问题就是“存在回答准确性不足”的弊端。那企业都想要通过GPT构建内容生态&#xff0c;在数字化时代保持行业领先地位。 企业都想要结合行业属性、业务需求等自身特点打…

火狐插件(fireBug)

FireBug Firebug是Firefox下的一款开发类插件&#xff0c;现属于Firefox的五星级强力推荐插件之一。它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体&#xff0c;是开发JavaScript、CSS、HTML和Ajax的得力助手 Firebug插件虽然功能强大&#xff0c;但是它已经和F…

巴比特 | 元宇宙每日必读:微软Bing重磅升级,全面开放无需排队,支持多模态输出,聊天历史记录,将推出类ChatGPT插件功能...

摘要&#xff1a;据财联社报道&#xff0c;当地时间周四&#xff08;5月4日&#xff09;&#xff0c;微软公司在官网宣布了对搜索引擎必应&#xff08;Bing&#xff09;和Edge浏览器一系列的重磅升级&#xff0c;称这些举措是AI技术的新一轮创新。新闻稿写道&#xff0c;新版Bi…

用函数计算解决ChatGPT API的调用

目录 一、准备 1.node.js 2.阿里云函数计算 3.两行命令实现部署 第一步&#xff1a;初始化项目。 第二步&#xff1a;一键部署。 二、使用代理访问API 一、准备 1.node.js npm安装&#xff1a; $ npm install serverless-devs/s -gyarn安装&#xff1a; $ yarn global …

抖音直播各类话术?开场、留人、促单互动话术合集

直播间各类型话术 一、直播开场互动话术 直播开场互动是用来留住直播间的第一波用户的&#xff0c;调动第一波用户的热情&#xff0c;才能持续为直播间加热。 直播开场互动话术参考&#xff1a; 1、“欢迎大家们来到我的直播间&#xff0c;希望朋友们多多支持&#xff0c;多多…