最长路及其字典序输出所有解
来源:互联网 发布:捕鱼达人源码 编辑:程序博客网 时间:2024/04/29 06:36
#include<stdio.h>
#include<string.h>
int a[110],b[110];
int g[110][110];
int d[110];
int ans[110];
int n;
int cnt;
int tot;
void print_ans(int i,int maxs){
int j,k;
ans[cnt++] = i;
if(cnt>=maxs){
printf("Case %d:",tot++);
for(k = 0;k<cnt;k++) printf("%d ",ans[k]);
printf("\n");
}
for(j = 1;j<=n;j++){
if(g[i][j] && d[i] == d[j]+1){
print_ans(j,maxs);
cnt--;
}
}
}
int DP(int i){
int j;
int &ans = d[i];
if(ans>0) return ans;
ans = 1;
for(j = 1;j<=n;j++){
if(g[i][j]) {
int temp = DP(j)+1;
if(ans<temp) ans = temp;
}
}
return ans;
}
int main(){
int i,j;
int maxs,index;
while(scanf("%d",&n)!=EOF){
for(i = 1;i<=n;i++){
scanf("%d%d",&a[i],&b[i]);
}
memset(g,0,sizeof(g));
memset(d,-1,sizeof(d));
for(i = 1;i<=n;i++){
for(j = 1;j<=n;j++){
if((a[i]<b[j]&&b[i]<a[j])||(a[i]<a[j] && b[i]<b[j])) g[i][j] = 1;
}
}
for(i = 1;i<=n;i++){
for(j = 1;j<=n;j++) printf("%d ",g[i][j]);
printf("\n");
}
index = 1;
maxs = 1;
for(i = 1;i<=n;i++){
int temp = DP(i);
if(maxs<temp){
maxs = temp;
index = i;
}
}
printf("%d\n",maxs);
cnt = 0;
tot = 1;
print_ans(index,maxs);
}
return 0;
}
#include<string.h>
int a[110],b[110];
int g[110][110];
int d[110];
int ans[110];
int n;
int cnt;
int tot;
void print_ans(int i,int maxs){
int j,k;
ans[cnt++] = i;
if(cnt>=maxs){
printf("Case %d:",tot++);
for(k = 0;k<cnt;k++) printf("%d ",ans[k]);
printf("\n");
}
for(j = 1;j<=n;j++){
if(g[i][j] && d[i] == d[j]+1){
print_ans(j,maxs);
cnt--;
}
}
}
int DP(int i){
int j;
int &ans = d[i];
if(ans>0) return ans;
ans = 1;
for(j = 1;j<=n;j++){
if(g[i][j]) {
int temp = DP(j)+1;
if(ans<temp) ans = temp;
}
}
return ans;
}
int main(){
int i,j;
int maxs,index;
while(scanf("%d",&n)!=EOF){
for(i = 1;i<=n;i++){
scanf("%d%d",&a[i],&b[i]);
}
memset(g,0,sizeof(g));
memset(d,-1,sizeof(d));
for(i = 1;i<=n;i++){
for(j = 1;j<=n;j++){
if((a[i]<b[j]&&b[i]<a[j])||(a[i]<a[j] && b[i]<b[j])) g[i][j] = 1;
}
}
for(i = 1;i<=n;i++){
for(j = 1;j<=n;j++) printf("%d ",g[i][j]);
printf("\n");
}
index = 1;
maxs = 1;
for(i = 1;i<=n;i++){
int temp = DP(i);
if(maxs<temp){
maxs = temp;
index = i;
}
}
printf("%d\n",maxs);
cnt = 0;
tot = 1;
print_ans(index,maxs);
}
return 0;
}
0 0
- 最长路及其字典序输出所有解
- UVA 103 Stacking Boxes(DAG 上的最长路及其字典序输出)
- UVA103动态规划之DAG上的最长路及其字典序
- DAG之硬币问题DP(最长路及其字典序)
- 9.2.2嵌套矩形问题(最长路及其字典序)
- AOE网上的关键路径(spfa+按字典序输出最长路)
- 反字典序输出整数所有分割方式
- 最长公共子序列及其输出
- 输出所有的最长公共子序列
- 输出所有的最长公共子序列
- 输出当前目录及其所有子目录名称
- 面试题 0到N的所有数按字典序输出
- ZOJ1083:Frame Stacking(拓扑排序 & 字典序输出所有结果)
- 找出所有最长连续重复子串及其个数
- 找出所有最长连续重复子串及其个数
- java 找出所有最长连续重复子串及其个数
- UVA 题目760 DNA Sequencing (后缀数组求两个串最长公共子串,字典序输出)
- 输出所有的最长单调递增子序列。
- 三大特性看明白中国电影市场
- [C++] [算法] KMP算法
- hdu 2044 一只小蜜蜂...
- 盘点2014五个你砸机剁手、哭爹喊娘都玩不过10分的手机小游戏
- 美拍也救不了短视频
- 最长路及其字典序输出所有解
- OpenStack 网络模型与框架
- 黑马程序员_UDP的简介
- mongodb 命令详解
- 一个简单单点登录SSO的实现(.net到j2ee)
- Ogre嵌入MFC傻瓜完全教程(一)
- VC++学习之进程和线程的区别
- linux下的nandflash驱动分析(1)——基于s3c6410平台
- 【OpenCV第一篇】安装OpenCV