博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 103 - Stacking Boxes (LIS,打印路径)
阅读量:5936 次
发布时间:2019-06-19

本文共 1345 字,大约阅读时间需要 4 分钟。

题意:给n维图形,它们的边长是{d1,d2,d3...dn},  对于两个n维图形,求满足当中一个的全部边长

依照随意顺序一一相应小于还有一个的边长,这种最长序列的个数,而且打印随意一个最长子串的路径,

比如:a(9,5,7,3),b(6,10,8,2),c(9,7,5,1),a和b不满足,但c和b满足

分析:首先对没组边长从小到大排序,再对各组图形按最小边排序,再求最大子串,

对于打印路径,能够逆序循环,也可递归求解

#include
#include
using namespace std;int dp[35],path[35],num,m,k;struct stu{ int a[12],id;}s[35];int cmp(struct stu s1,struct stu s2){ return s1.a[1]
=s[i].a[k]) break; if(k==n+1&&dp[j]+1>dp[i]){ dp[i]=dp[j]+1; path[i]=j; } } } pos=1; for(i=2;i<=m;i++) if(dp[i]>dp[pos]) pos=i; m=dp[pos]; printf("%d\n",m); b[1]=s[pos].id; //先把最后一个编号增加 i=2; for(j=pos-1;j>=1;j--){ //逆序循环求路径 for(k=1;k<=n;k++) if(s[j].a[k]>=s[pos].a[k]) break; if(k==n+1&&dp[j]+1==dp[pos]){ b[i++]=s[j].id; dp[pos]--; } if(dp[pos]==1) break; } for(j=i-1;j>1;j--) printf("%d ",b[j]); printf("%d\n",b[1]); /*num=0; //递归方法1 back_path1(pos);*/ /*num=0; //递归方法2 k=m; back_path2(pos);*/ } return 0;}

转载地址:http://krvtx.baihongyu.com/

你可能感兴趣的文章
freeradius 启动报错Refusing to start with libssl version OpenSSL 1.0.1
查看>>
python 操作redis之——有序集合(sorted set) (七)
查看>>
Python 爬虫实例(1)—— 爬取百度图片
查看>>
setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key
查看>>
Linux环境变量设置中配置文件分析(/etc/profile,~/.bashrc等)(转)
查看>>
详解执行计划
查看>>
petri网
查看>>
删除节点
查看>>
Objective-C Classes Are also Objects
查看>>
idea搭建javaweb项目 Artifacts生成
查看>>
python matplot 绘图
查看>>
内存错误的类别
查看>>
Authentication 方案优化探索(JWT, Session, Refresh Token, etc.)
查看>>
Struts2 关于返回type="chain"的用法.
查看>>
Maven私服安装及配置——(十二)
查看>>
设计模式 - 迭代器模式(iterator pattern) 具体解释
查看>>
Codeforces554B:Ohana Cleans Up
查看>>
【java】jvm查看当前虚拟机堆大小限制
查看>>
java之 ------ 可变參数和卫条件
查看>>
Spring MVC-表单(Form)标签-单选按钮集合(RadioButtons)示例(转载实践)
查看>>