关注
// ====== 填入你自己的逻辑 ========
/////********************************/////
/*
看了大家的回复,才知道自己漏看了题目,后来想了想,现将思路贴出来,供大家交流
具体见我的博客:http://blog.csdn.net/bxw1992/article/details/74534157 目的:最多可以取出多少个能够组成嵌套集
思路:
如果存在一个子嵌套集,而新增加的一个二段模式与子嵌套集的某个二段模式冲突(不相互嵌套),它虽然不能加入该嵌套子集,
但是它却可以和该子集中不冲突的其他二段模式组成子集,所以很难处理。因此,从这个角度来思考,太过于复杂。
从上面的思路中我们可以得到一些有用的结论:针对存在的一个子嵌套集,新的二段模式的加入,可以生成新的子嵌套集,也就
是造成分支;进一步我们可以认为,一个二段模式最多可以生成一个分支,而且一个分支主要是因为某个二段模式与其他嵌套集
冲突造成的,也就是一个二段模式可以对应一个嵌套集;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;
}
// ====== 结束 ========
查看原帖
点赞 评论
相关推荐
05-13 13:29
门头沟学院 C++ 点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
31403次浏览 639人参与
# 机械人集合!你是什么工程师? #
15418次浏览 89人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
26189次浏览 212人参与
# 秋招什么时候开投比较合适? #
19423次浏览 276人参与
# 发工资后,你做的第一件事是什么 #
67630次浏览 229人参与
# 如何准备秋招 #
18371次浏览 351人参与
# 百度工作体验 #
219728次浏览 1959人参与
# 机械人与华为的爱恨情仇 #
116298次浏览 942人参与
# 工作中哪个瞬间让你想离职 #
25511次浏览 177人参与
# 硬件应届生薪资是否普遍偏低? #
73667次浏览 514人参与
# 不考虑转正,实习多久合适 #
31666次浏览 145人参与
# 影石Insta360求职进展汇总 #
123197次浏览 1069人参与
# 通信和硬件还有转码的必要吗 #
57318次浏览 526人参与
# 24届的你们都什么时候入职? #
60008次浏览 424人参与
# 面试被问期望薪资时该如何回答 #
256055次浏览 1479人参与
# 实习,不懂就问 #
42455次浏览 648人参与
# 你们公司几号发工资 #
20575次浏览 139人参与
# 软开人,秋招你打算投哪些公司呢 #
102511次浏览 958人参与
# 每个月的工资都是怎么分配的? #
25492次浏览 411人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
29046次浏览 460人参与
# 你觉得现在还能进互联网吗? #
7643次浏览 130人参与