uva 103Stacking Boxes
来源:互联网 发布:淘宝网店怎么设置客服 编辑:程序博客网 时间:2024/06/07 01:02
递归式的动态规划,很有意思
#include <stdio.h>#include <vector>#include <algorithm>#include <stdlib.h>#include <set>using namespace std;typedef int BOX_SIZE;typedef int BOX_INDEX;vector< vector<BOX_SIZE> > v;vector< vector<BOX_INDEX> > path;set<int> visited;int box_n_g;bool is_bigger(int box1, int box2){int i; bool res;res = true;for(i=0; i<v[box1].size(); i++){if(v[box1][i] <= v[box2][i]){res = false;break;}}return res;}//dp[cur]是以第cur个盒子作为最大的盒子的情况下,最多可以有多少个盒子符合要求int get_dp(int cur, int *dp, vector< vector<BOX_INDEX> > &path){int i, temp;if(visited.find(cur) != visited.end())return dp[cur];visited.insert(cur);for(i=1; i<=box_n_g; i++){if(cur == i)continue;if(is_bigger(cur, i)){temp = get_dp(i, dp, path) + 1;if(dp[cur] < temp){dp[cur] = temp;path[cur] = path[i];path[cur].push_back(cur);}}}return dp[cur];}void func(int box_n){int *dp;int i, max, cur_dp, max_i;vector<BOX_INDEX> vv;dp = (int*)malloc(sizeof(int)*(box_n+1));path.clear();path.push_back(vv);for(i=1; i<=box_n; i++){dp[i] = 1;vv.clear();vv.push_back(i);path.push_back(vv);}visited.clear();max = -1;max_i = -1;for(i=1; i<=box_n; i++){cur_dp = get_dp(i, dp, path);if(max < cur_dp){max = cur_dp;max_i = i;}}free(dp);printf("%d\n", max);for(i=0; i<path[max_i].size(); i++){if(i > 0)printf(" ");printf("%d", path[max_i][i]);}printf("\n");}int main(void){int box_n, weidu_n, i, j, size;vector<BOX_SIZE> vv;//freopen("input.dat", "r", stdin);while(scanf("%d %d", &box_n, &weidu_n) != EOF){box_n_g = box_n;v.clear();v.push_back(vv);for(i=1; i<=box_n; i++){vv.clear();for(j=0; j<weidu_n; j++){scanf("%d", &size);vv.push_back(size);}sort(vv.begin(), vv.end());v.push_back(vv);}func(box_n);}return 0;}
0 0
- UVa 103 Stacking Boxes
- UVA 103 - Stacking Boxes
- uva 103 - Stacking Boxes
- uva 103 Stacking Boxes
- [UVA 103] Stacking Boxes
- uva:103 - Stacking Boxes
- UVa 103 - Stacking Boxes
- UVA - 103 Stacking Boxes
- uva 103 - Stacking Boxes
- UVA 103 Stacking Boxes
- UVa 103 - Stacking Boxes
- Uva - 103 - Stacking Boxes
- uva 103 - Stacking Boxes
- UVa 103 - Stacking Boxes
- UVa 103 - Stacking Boxes
- Uva-103-Stacking Boxes
- UVa:103 Stacking Boxes
- UVA - 103 Stacking Boxes
- SELECT超时小结
- 备忘之 拷贝构造函数
- [hdu4041]Eliminate Witches!
- struts2使用JSP直接访问国际化资源文件
- poj_A Chess Game2425
- uva 103Stacking Boxes
- PAT 1006. 换个格式输出整数
- 《程序员面试宝典》打印规律矩阵
- 单例模式的七种写法
- Socket通信(TCP)非阻塞模式-select模型
- ABAP內表中列累加的两种方法。
- 12项目四。日期时间类
- Linq To EF 使用小知识(添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)
- xml初步学习