【DP】UVA 103 Stacking Boxes 输出路径
2014-09-01 19:29
387 查看
类似于叠箱子
对于箱子a : (a1,a2,a3),b : (b1,b2,b3)
存在一个顺序ai<bj,ak<bi,aj<bk 就表示a可以到b
对于箱子a : (a1,a2,a3),b : (b1,b2,b3)
存在一个顺序ai<bj,ak<bi,aj<bk 就表示a可以到b
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <string> #include <iostream> #include <algorithm> using namespace std; #include <queue> #include <stack> #include <vector> #include <deque> #include <set> #include <map> #define IN freopen ("in.txt" , "r" , stdin); #define OUT freopen ("out.txt" , "w" , stdout); typedef long long LL; const int MAXN = 1111111;//点数的最大值 const int MAXM = 20006;//边数的最大值 const int INF = 11521204; const int mod=1000000007; int n,m; struct node { int x[44],num; friend bool operator < (const node&a, const node&b) { for(int i=0; i<m; ++i) { if(a.x[i]>b.x[i])return false; } return true; } } a[100]; int dp[111]; int x[111]; void print(int i){ if(x[i]!=i)print(x[i]); printf("%d ", a[i].num); } int main() { IN; while(scanf("%d%d",&n,&m)!=EOF) { memset(dp,0,sizeof(dp)); memset(x,0,sizeof(x)); dp[0]=1; for(int i=0; i<n; i++) { for(int j=0; j<m; j++) scanf("%d",&a[i].x[j]); sort(a[i].x,a[i].x+m);//给维度排序 a[i].num=i+1;//编号 } sort(a,a+n);//全部排序 int maxx=1,ans=0; for(int i=0; i<n; i++) { for(int j=0; j<i; j++) { int flag=0; for(int k=0; k<m; k++)//flag==0表示i与j可叠加 { if(a[i].x[k]<=a[j].x[k]) flag=1; } if(!flag&&dp[i]<dp[j]+1) { dp[i]=dp[j]+1; x[i]=j; } if(dp[i]>maxx)//更新最大值 { maxx=dp[i]; ans=i;//起始 } } } printf("%d\n",maxx); print(ans);//输出序列 printf("\n"); } return 0; }
相关文章推荐
- 【DP】UVA 103 Stacking Boxes 输出路径
- UVA 103 Stacking Boxes (dp + DAG上的最长路径 + 记忆化搜索)
- UVA 103 Stacking Boxes (dp + DAG上的最长路径 + 记忆化搜索)
- Stacking Boxes - UVa 103 dp
- uva 103 Stacking Boxes(DAG上的最长路径)
- UVa 103 - Stacking Boxes (LIS,打印路径)
- 【解题报告】uva103_Stacking Boxes(堆砌盒子, dp)
- UVa 103 Stacking Boxes 堆砌盒子(DP 最长条件子序列)
- Uva 103-Stacking Boxes(DP/矩形嵌套)
- uva103Stacking Boxes——dp
- UVA_103 Stacking boxes(DP)
- UVa 103 Stacking Boxes (DP&DAG)
- UVa 103 - Stacking Boxes (LIS,打印路径)
- UVA 103 Stacking Boxes (DP)
- uva 103 (dp)Stacking Boxes
- UVA 103 Stacking Boxes 堆砌盒子(DP)
- UVa 103 - Stacking Boxes(dp求解)
- UVA 103 Stacking Boxes(DAG 上的最长路及其字典序输出)
- Uva-103-Stacking Boxes
- uva103-Stacking_Boxes(dp最长递增子序列)