DAG镶嵌模型+原始路径打印
DP矩形镶嵌,打印路径与最长公共子序列相似。
1 #include<stdio.h> 2 #include<string.h> 3 #define doumax(a,b) (a>b?a:b) 4 const int maxn=100; 5 int mat[maxn][maxn],dp[maxn],n; 6 struct node{ 7 int a; 8 int b; 9 void dousort(void) 10 { 11 if(a<b){ 12 int temp=a; 13 a=b; 14 b=temp; 15 } 16 } 17 bool operator<(const node & t) 18 { 19 return t.a>a && t.b>b; 20 } 21 void operator=(const node & t) 22 { 23 a=t.a;b=t.b; 24 } 25 }rect[maxn],rectinit[maxn]; 26 int dpmodel(int i); 27 void print_road(int i); 28 int main() 29 { 30 while(scanf("%d",&n)==1){ 31 for(int i=1;i<=n;i++){ 32 scanf("%d%d",&rect[i].a,&rect[i].b); 33 rectinit[i]=rect[i]; 34 rect[i].dousort(); 35 } 36 memset(mat,0,sizeof(mat)); 37 memset(dp,0,sizeof(dp)); 38 for(int i=1;i<=n;i++) 39 for(int j=i+1;j<=n;j++){ 40 if(rect[i]<rect[j]) 41 mat[i][j]=1; 42 else if(rect[j]<rect[i]) 43 mat[j][i]=1; 44 } 45 int maxroad=0,maxi; 46 for(int i=1;i<=n;i++){ 47 if(maxroad<dpmodel(i)){ 48 maxroad=dpmodel(i); 49 maxi=i; 50 } 51 } 52 printf("%d\n",maxroad); 53 print_road(maxi); 54 } 55 return 0; 56 } 57 int dpmodel(int i) 58 { 59 if(dp[i]>0) 60 return dp[i]; 61 dp[i]=1; 62 for(int j=1;j<=n;j++) 63 if(mat[i][j]) 64 dp[i]=doumax(dp[i],dpmodel(j)+1); 65 return dp[i]; 66 } 67 void print_road(int i) 68 { 69 printf("(%d,%d)\n",rectinit[i].a,rectinit[i].b); 70 if(dp[i]==1) 71 return; 72 for(int j=1;j<=n;j++) 73 if(mat[i][j] && dp[i]==dp[j]+1){ 74 print_road(j); 75 return; 76 } 77 }
转载于:https://www.cnblogs.com/BMESwimming/p/3858097.html
DAG镶嵌模型+原始路径打印相关推荐
- fanuc机器人四边形编程_FANUC机器人示教编程:原始路径恢复功能介绍与使用方法...
概要 原始路径恢复功能,是在机器人运行过程中,程序动作由于某种原因被暂停的情况下,当机器人再次启动运行时首先恢复到暂停时位置的一种功能.比如,在暂停后通过手动运行方式使得机器人发生了移动,当再次启动机 ...
- DAG的最小路径覆盖和二分图的最大匹配
DAG的最小路径覆盖和二分图的最大匹配 DAG的最小路径覆盖是指找最小数目的互相不相交的有向路径,满足DAG的所有顶点都被覆盖. 首先给出公式:DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中 ...
- POJ - 3683 Priest John's Busiest Day(2-SAT+路径打印)
题目链接:点击查看 题目大意:现在有n对新人要结婚,每一场婚礼都要请牧师主持一个特殊的仪式,这个仪式必须在婚礼的前d分钟或者最后d分钟进行,现在问能否有一种安排,能让牧师参加到每一场婚礼去主持仪式,输 ...
- 洛谷 - P3254 圆桌问题(最大流+路径打印)
题目链接:点击查看 题目大意:n个单位的员工来吃饭,每个单位有ai名员工,现在有m张桌子,每张桌子能容纳bi个人,现在要求将每个员工分配到桌子上用餐,需要满足的一个要求是每张桌子上不能有相同单位的两个 ...
- 洛谷 - P2764 最小路径覆盖问题(最大流+二分图最小路径覆盖+路径打印)
题目链接:点击查看 题目大意:给出一个由n个点和m条边组成的有向无环图,现在需要我们求最少可以将n个点分为多少条简单路径,并打印出每一条路径 题目分析:题意挺难懂的..简单来说就是让求二分图最小路径覆 ...
- 洛谷 - P2763 试题库问题(最大流+路径打印)
题目链接:点击查看 题目大意:给出n种试题类型,以及m种试题,现在需要出题,要求每种类型的题目必须满足相应的数目,问应该怎么设计方案 题目分析:一开始其实就建好了图,然后就在怀疑自己建图的正确性,因为 ...
- ios开发之plist 的文件的读写以及沙盒容器路径打印
ios开发之plist 的文件的读写以及沙盒容器路径打印 核心代码在这里 // // ViewController.m // 21-plist存储和沙盒路径 // // Created by 鲁军 o ...
- 查找目录下的及子目录下的 所有的给定后缀名的文件并将其路径打印到一个文件中。
package FileDemo;import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; impo ...
- exam1802 Bounty Hunter II(DAG的最小路径覆盖)
原文:http://www.cnblogs.com/jackiesteed/articles/2043934.html DAG的最小路径覆盖是指找最小数目的互相不相交的有向路径,满足DAG的所有顶点都 ...
最新文章
- 系统性能优化 1-1 Redis删除key和字符串拼接
- oracle事务数统计,oracle函数与事务
- 三层架构下实现用户登陆C#
- 面向对象的C语言编程-DynamicLinkageGenericFunctions--C语言中的偷梁换柱
- [Android]AndroidBucket增加碎片SubLayout功能及AISubLayout的注解支持
- 用js代码判断质数_在 JS 中判断,并不是都要用 ===
- 《Java技术》第四次作业
- 利用卷积神经网络(CNN)提取图片特征
- 解决Fedora14使用root权限登录问题
- beanshell断言_Beanshell断言
- zigbee模块和433无线模块的区别
- 第6章 访问权限控制
- 点连通度与边连通度的求解
- 瑞吉外卖项目学习笔记:P1-项目介绍
- python3编写人工智能_人工智能学习第三章 编写第一个Python程序 及概念
- coursera android,Coursera
- 手机重力感应控制电脑(一)
- ELK日志分析平台(一)—elasticsearch安装及配置、elasticsearch图形化插件安装
- 用户层调用nl80211的例子
- 2012年CCS云计算高峰论坛
热门文章
- python网络编程知识_python六十七课——网络编程(基础知识了解)
- 最速下降法极小化rosenbrock函数 代码_典型算法思想与应用9|分支限界法与电路布线问题
- Python 语言程序设计(5-3) 代码复用与函数递归
- 计算机上没有系统软件应用软件也一样能使用,2010判断题一般双击桌面上的程序图标可以打开该程序...
- 人脸检测(十)--强分类器源码分析
- 树莓派安装python3.5_树莓派升级python的具体步骤
- 如何在html创建js对象,在js中使用createElement创建HTML对象和元素
- 虚拟化四路服务器,IDC:4路及8路服务器现状未来趋势分析
- 计算机三级网络技术知识点cn,计算机等级三级网络技术考试详解
- 从复杂指令系统到精简指令系统