UVA 103-Stacking Boxes
2015-03-16 14:02
197 查看
这道多维图形嵌套问题又做了好久,但也收获了很多,代码写的不是很清晰,通过这道题熟悉了qsort()快速排序,学会了通过qsort()间接对数组地址进行排序,也了解了有关间接排序的一些方法。(日记里)。
代码如下:
代码如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> #define MAXN 30+5 int a[MAXN][15],f[MAXN],m[MAXN][MAXN],r[MAXN],w[MAXN]; int k, n, ok; int flag; int cmp1(const void *_p,const void *_q) { int *p = (int *)_p; int *q = (int *)_q; return *p - *q; } int cmp2(const void *_p,const void *_q) { int *p = (int *)_p; int *q = (int *)_q; return a[*p][1] - a[*q][1]; } void com(int i, int j) { for(int p = 1; p <= n; p ++) if(a[r[i]][p] >= a[r[j]][p]) return; ok = 1; } void dp(int i) { if(w[i] == -1) ; else dp(w[i]); if(w[i] == -1) printf("%d",r[i]); else printf(" %d",r[i]); } void solve() { memset(m,-1,sizeof(m)); memset(f,0,sizeof(f)); memset(w,-1,sizeof(w)); for(int i = 0; i < MAXN; i ++) f[i] = 1; for(int i = 1; i <= k; i ++) { int q = 0; for(int j = i +1; j <= k; j ++) { ok = 0; com(i,j);//printf("i=%d j=%d ok=%d\n",i,j,ok); if(ok&&f[j]<f[i]+1) {f[j] = f[i] + 1;w[j] = i;} // printf("f[i]=%d f[j] = %d w[j] = %d\n",f[i],f[j],w[j]); } } int max = -1; for(int i = 1; i <= k; i ++) if(f[i] > max) {max = f[i];flag = i;} printf("%d\n",max); //for(int i = 0; i <= k; i ++) // printf("i = %d w[i] = %d\n",i,w[i]); dp(flag); printf("\n"); } void input() { memset(a,0,sizeof(a)); while(scanf("%d%d",&k,&n) == 2) { for(int i = 1; i <= k; i ++) for(int j = 1; j <= n; j ++) scanf("%d",&a[i][j]); for(int i = 1; i <= k; i ++) qsort(a[i],n+1,sizeof(a[1][1]),cmp1); for(int i = 0; i <= k; i ++) r[i] = i; qsort(r,k+1,sizeof(r[0]),cmp2); solve(); } } int main() { input(); return 0; }
相关文章推荐
- UVa - 103 - Stacking Boxes
- UVa103 - Stacking Boxes
- uva 103 Stacking Boxes
- UVa 103 - Stacking Boxes
- UVA 103 Stacking Boxes n维最长上升子序列
- UVa 103 Stacking Boxes (DP&DAG)
- UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索
- uva 103 Stacking Boxes(动态规划:矩形嵌套加强)
- UVa Problem 103 - Stacking Boxes
- UVA 103 Stacking Boxes (dp + DAG上的最长路径 + 记忆化搜索)
- UVA 103 Stacking Boxes (DAG上的动态规划)
- uva103-Stacking_Boxes(dp最长递增子序列)
- uva103 - Stacking Boxes(动归,记忆化搜索)
- UVa 103 Stacking Boxes 解题源码
- uva 103 - Stacking Boxes 动态规划——最长路及字典序
- uva 103 Stacking Boxes (DAG)
- uva103-Stacking_Boxes(dp最长递增子序列)
- UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索
- UVA - 103 Stacking Boxes
- [动态规划]UVA103 - Stacking Boxes