DP 练习 uva103 Stacking Boxs
来源:互联网 发布:林非比的淘宝店铺 编辑:程序博客网 时间:2024/05/21 22:46
题目链接https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=39
#include <stdio.h>#define MAX_K 31#define MAX_N 11int k;// number of box, k<=30int n;// n dimensionality, 1 <= n <=10int boxs[MAX_K][MAX_N];int dp[MAX_K];// a box can be put into b boxbool canFit(int a, int b){// can not fit itselfif (a == b)return false;int i;for (i = 1; i <= n; i++){if (boxs[a][i] >= boxs[b][i])return false;}return true;}void print_ans(int i){printf("%d ", i);for (int j = 1; j <= k; j++){if (canFit(i, j) && dp[i] == dp[j] + 1){print_ans(j);break;}}}int memo(int i){int & ans = dp[i];if (ans > 0) return ans;ans = 1;for (int j = 1; j <= k; j++){if (canFit(i, j)){int tmp = memo(j) + 1;if (ans < tmp)ans = tmp;}}return ans;}////////////////////////////////void swap(int *a, int *b){int t;t = *a;*a = *b;*b = t;}int Partition(int a[], int low, int high){int x = a[high];int i = low - 1;for (int j = low; j <= high - 1; j++){if (a[j] <= x){i = i + 1;swap(&a[i], &a[j]);}}swap(&a[i + 1], &a[high]);return i + 1;}void QuickSort(int a[], int low, int high){if (low < high){int mid = Partition(a, low, high);QuickSort(a, low, mid - 1);QuickSort(a, mid + 1, high);}}int main(){int i, j;freopen("uva103_stackingboxs_input.txt", "r", stdin);while (scanf("%d %d", &k, &n) != EOF){for (i = 1; i <= k; i++){dp[i] = 0;for (j = 1; j <= n; j++){scanf("%d", &boxs[i][j]);}QuickSort(boxs[i], 1, n);}#ifdef DEBUGfor (i = 1; i <= k; i++){for (j = 1; j <= n; j++){printf("%d ", boxs[i][j]);}printf("\n");}#endif//int longest = 0;int start = 0;for (i = 1; i <= k; i++){int tmp = memo(i);if (longest < tmp){longest = tmp;start = i;}}//printf("%d\n", longest);print_ans(start);printf("\n");}return 0;}
0 0
- DP 练习 uva103 Stacking Boxs
- Uva103 Stacking Boxes 贪心 深搜 +DP思想
- UVa103 - Stacking Boxes
- uva103 - Stacking Boxes(DAG)
- UVA103 (DP)
- [动态规划]UVA103 - Stacking Boxes
- UVA103 DP记忆化搜索
- uva103
- uva103 - Stacking Boxes(动归,记忆化搜索)
- uva103-Stacking_Boxes(dp最长递增子序列)
- UVA_103 Stacking boxes(DP)
- Java程序练习-Card Stacking
- uva 103 (dp)Stacking Boxes
- DP-DAG uva_103 Stacking Boxes
- Stacking Boxes - UVa 103 dp
- UVALive 5790 Ball Stacking dp
- uva--103Stacking Boxes +dp
- Uva-1289 Stacking Plates(DP)
- dubbo+zk实现demo
- 4.1.数组指针和指针数组和二重指针
- weka连接sqlserver2005
- java复习(-)基本类型
- zxing生成二维码
- DP 练习 uva103 Stacking Boxs
- MQ实现分布式事务
- 聚类算法汇总
- ImageLoader的简单使用详情
- 自定义圆形图片
- java的API/Object
- 汽水3换1问题编程
- androlyze.py使用方法【三】
- getContextPath、getServletPath、getRequestURI、getRealPath的区别