首页 > 其他 > 详细

uva 103 - Stacking Boxes

时间:2014-03-03 23:51:38      阅读:797      评论:0      收藏:0      [点我收藏+]

这一题和上一题类似,只不过要保存最长序列而已,可以知道在刘汝佳老师书中只要记录状态d[i]的前一个即可。

bubuko.com,布布扣
 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 int dj[100][100],num[100][100],d[100];
 5 int m,n;
 6 int prenum[100];
 7 int distanc(int a){           //动态规划的方法仿照上一题
 8     if(d[a]>-1)
 9         return d[a];
10     for(int i=0;i<m;i++){
11         if(i==a)
12             continue;
13         if(dj[a][i]){
14             if(d[a]<1+distanc(i)){
15                 d[a]=1+distanc(i);
16                 prenum[a]=i;        //这里保存前一个状态
17             }
18         }
19         else
20             continue;
21     }
22     if(d[a]==-1)
23         d[a]=1;
24     return d[a];
25 }
26 int main(){
27     
28     while(cin>>m>>n){
29         for(int i=0;i<m;i++){
30             for(int j=0;j<n;j++){
31                 cin>>num[i][j];
32             }
33             sort(&num[i][0],&num[i][n]);
34             d[i]=-1;
35             prenum[i]=-1;
36         }
37         for(int i=0;i<m;i++){
38             for(int j=0;j<m;j++){
39                 if(i==j){
40                     dj[i][i]=1;
41                     continue;
42                 }
43                 dj[i][j]=dj[i][j]=0;
44                 for(int k=0;k<n;k++){
45                     if(num[i][k]<num[j][k]){
46                         dj[i][j]=1;            
47                     }
48                     else{
49                         dj[i][j]=0;
50                         break;
51                     }
52                 }
53             }
54         }
55         int maxnum=0;
56         int temp=0;
57         for(int i=0;i<m;i++){
58             if(maxnum<distanc(i)){
59                 maxnum=distanc(i);
60                 temp=i;
61             }
62         }
63         cout<<maxnum<<endl;
64         cout<<temp+1;
65         while(prenum[temp]!=-1){
66             
67             temp=prenum[temp];
68             cout<<" "<<temp+1;
69         }
70         cout<<endl;
71     }
72 }
bubuko.com,布布扣

uva 103 - Stacking Boxes,布布扣,bubuko.com

uva 103 - Stacking Boxes

原文:http://www.cnblogs.com/royjwy/p/3578164.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!