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镶嵌模型+原始路径打印相关推荐

  1. fanuc机器人四边形编程_FANUC机器人示教编程:原始路径恢复功能介绍与使用方法...

    概要 原始路径恢复功能,是在机器人运行过程中,程序动作由于某种原因被暂停的情况下,当机器人再次启动运行时首先恢复到暂停时位置的一种功能.比如,在暂停后通过手动运行方式使得机器人发生了移动,当再次启动机 ...

  2. DAG的最小路径覆盖和二分图的最大匹配

    DAG的最小路径覆盖和二分图的最大匹配 DAG的最小路径覆盖是指找最小数目的互相不相交的有向路径,满足DAG的所有顶点都被覆盖. 首先给出公式:DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中 ...

  3. POJ - 3683 Priest John's Busiest Day(2-SAT+路径打印)

    题目链接:点击查看 题目大意:现在有n对新人要结婚,每一场婚礼都要请牧师主持一个特殊的仪式,这个仪式必须在婚礼的前d分钟或者最后d分钟进行,现在问能否有一种安排,能让牧师参加到每一场婚礼去主持仪式,输 ...

  4. 洛谷 - P3254 圆桌问题(最大流+路径打印)

    题目链接:点击查看 题目大意:n个单位的员工来吃饭,每个单位有ai名员工,现在有m张桌子,每张桌子能容纳bi个人,现在要求将每个员工分配到桌子上用餐,需要满足的一个要求是每张桌子上不能有相同单位的两个 ...

  5. 洛谷 - P2764 最小路径覆盖问题(最大流+二分图最小路径覆盖+路径打印)

    题目链接:点击查看 题目大意:给出一个由n个点和m条边组成的有向无环图,现在需要我们求最少可以将n个点分为多少条简单路径,并打印出每一条路径 题目分析:题意挺难懂的..简单来说就是让求二分图最小路径覆 ...

  6. 洛谷 - P2763 试题库问题(最大流+路径打印)

    题目链接:点击查看 题目大意:给出n种试题类型,以及m种试题,现在需要出题,要求每种类型的题目必须满足相应的数目,问应该怎么设计方案 题目分析:一开始其实就建好了图,然后就在怀疑自己建图的正确性,因为 ...

  7. ios开发之plist 的文件的读写以及沙盒容器路径打印

    ios开发之plist 的文件的读写以及沙盒容器路径打印 核心代码在这里 // // ViewController.m // 21-plist存储和沙盒路径 // // Created by 鲁军 o ...

  8. 查找目录下的及子目录下的 所有的给定后缀名的文件并将其路径打印到一个文件中。

    package FileDemo;import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; impo ...

  9. exam1802 Bounty Hunter II(DAG的最小路径覆盖)

    原文:http://www.cnblogs.com/jackiesteed/articles/2043934.html DAG的最小路径覆盖是指找最小数目的互相不相交的有向路径,满足DAG的所有顶点都 ...

最新文章

  1. 系统性能优化 1-1 Redis删除key和字符串拼接
  2. oracle事务数统计,oracle函数与事务
  3. 三层架构下实现用户登陆C#
  4. 面向对象的C语言编程-DynamicLinkageGenericFunctions--C语言中的偷梁换柱
  5. [Android]AndroidBucket增加碎片SubLayout功能及AISubLayout的注解支持
  6. 用js代码判断质数_在 JS 中判断,并不是都要用 ===
  7. 《Java技术》第四次作业
  8. 利用卷积神经网络(CNN)提取图片特征
  9. 解决Fedora14使用root权限登录问题
  10. beanshell断言_Beanshell断言
  11. zigbee模块和433无线模块的区别
  12. 第6章 访问权限控制
  13. 点连通度与边连通度的求解
  14. 瑞吉外卖项目学习笔记:P1-项目介绍
  15. python3编写人工智能_人工智能学习第三章 编写第一个Python程序 及概念
  16. coursera android,Coursera
  17. 手机重力感应控制电脑(一)
  18. ELK日志分析平台(一)—elasticsearch安装及配置、elasticsearch图形化插件安装
  19. 用户层调用nl80211的例子
  20. 2012年CCS云计算高峰论坛

热门文章

  1. python网络编程知识_python六十七课——网络编程(基础知识了解)
  2. 最速下降法极小化rosenbrock函数 代码_典型算法思想与应用9|分支限界法与电路布线问题
  3. Python 语言程序设计(5-3) 代码复用与函数递归
  4. 计算机上没有系统软件应用软件也一样能使用,2010判断题一般双击桌面上的程序图标可以打开该程序...
  5. 人脸检测(十)--强分类器源码分析
  6. 树莓派安装python3.5_树莓派升级python的具体步骤
  7. 如何在html创建js对象,在js中使用createElement创建HTML对象和元素
  8. 虚拟化四路服务器,IDC:4路及8路服务器现状未来趋势分析
  9. 计算机三级网络技术知识点cn,计算机等级三级网络技术考试详解
  10. 从复杂指令系统到精简指令系统