UVA10118(记忆化搜索 + 好题)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19440
题意,4堆不同颜色的糖果,每堆N个,从堆上往下拿,放入一个最大装5个糖果的篮子里,如果糖果颜色相同就能将这两个放入自己口袋,问最多能放多少
分析:dp[1][2][3][4]表示取每一堆的第1,2,3,4个的情况,top[i]表示第i堆该取的个数,记忆化搜索
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; const int MAX = 50; int dp[MAX][MAX][MAX][MAX],has_color[MAX],pile[5][MAX],top[5]; int n; int dfs(int cnt) {if(dp[ top[1] ][ top[2] ][ top[3] ][ top[4] ] != -1)return dp[ top[1] ][ top[2] ][ top[3] ][ top[4] ];if(cnt == 5) //如果已经取了5个,那就是0了return dp[ top[1] ][ top[2] ][ top[3] ][ top[4] ] = 0;int ans = 0;for(int i = 1; i <= 4; i++){if(top[i] > n)continue;int color = pile[i][ top[i] ];top[i] += 1; //下一个if(has_color[color]) //有一个跟这个颜色相同 {has_color[color] = 0;ans = max(ans, dfs(cnt - 1) + 2);//篮子里还能装cnt-1个,把篮子里那个拿出来has_color[color] = 1;}else{has_color[color] = 1;ans = max(ans, dfs(cnt + 1));has_color[color] = 0;}top[i] -= 1;}return dp[ top[1] ][ top[2] ][ top[3] ][ top[4] ] = ans; } int main() {while(scanf("%d", &n) != EOF && n){for(int i = 1; i <= n; i++){for(int j = 1; j <= 4; j++)scanf("%d", &pile[j][i]);}memset(has_color, 0, sizeof(has_color));memset(dp, -1, sizeof(dp));top[1] = top[2] = top[3] = top[4] = 1;printf("%d\n", dfs(0) / 2);//至于这里为什么除以2,以为dfs时暴力了所有假设 是 1 ,2,2,3那么以第二堆为top[2】时能拿两个,以第三堆为top[3]时也能拿两个 }return 0; }
转载于:https://www.cnblogs.com/zhaopAC/p/5104087.html
UVA10118(记忆化搜索 + 好题)相关推荐
- 22.11.30打卡 记忆化搜索2水题
Function Run Fun 记忆化搜索模板题, 个人认为比滑雪还简单 需要注意的只有当数组下标为负数的时候需要特判一下 其余直接照抄题目就能过了 /* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿ ...
- 22.12.1打卡 漫步校园 记忆化搜索
题目里很显然只走最短路, 直接用bfs从终点到起点搜一遍将每一步到终点所需要的最短的时间存在一个dis数组中, 然后你就会发现原来的地图变成了这样 上面是地图下面是dis数组, 再看看经典记忆化搜索模 ...
- 2017广东工业大学程序设计竞赛决赛 题解源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)...
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起&qu ...
- 【蓝桥杯真题】地宫取宝(搜索-记忆化搜索详解)
链接 [蓝桥杯][2014年第五届真题]地宫取宝 题目描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...
- 巧用记忆化搜索代替暴力递归(洛谷P1464题题解,Java语言描述)
题目要求 P1464题目链接 分析 如果--你信了这题干,真的写了递归--TLE警告!!! 所以,就需要优化嘛-- [−9223372036854775808,9223372036854775807] ...
- 第23次CSP认证 第4题 收集卡牌(记忆化搜索,状压)
链接:http://118.190.20.162/view.page?gpid=T132 思路:先写一个暴力搜索,然后把中间结点的状态存起来,就是记忆化搜索,状态要存搜索到的层数和选择的卡牌数,0代表 ...
- [蓝桥杯][2014年第五届真题]地宫取宝(记忆化搜索)
题目描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...
- [Leetcode][第322题][JAVA][零钱兑换][回溯][记忆化搜索][动态规划]
[问题描述][中等] [解答思路] 1. 递归(超时) class Solution {int res = Integer.MAX_VALUE;public int coinChange(int[] ...
- [Leetcode][第312题][JAVA][戳气球][动态规划][记忆化搜索]
[问题描述][困难] [解答思路] 1. 记忆化搜索 时间复杂度:O(n^3) 空间复杂度:O(n^2) class Solution {public int[][] rec;public int[] ...
最新文章
- 三、Netty的粘包半包问题解决
- 解决vmware移动虚拟机之后执行ifconfig命令无输出的问题
- mouted vue 操作dom_vue中关于dom的操作
- 如何使用Action.Invoke()触发一个Storyboard
- MONO Jexus部署最佳体验
- 按值传递和按引用传递的区别_c++按值、地址、引用传递参数
- 基于springBoot的社区信息管理系统
- 主板 B85 + 核显HD4600 , EFI 安装黑苹果
- ISO 3166-1 国家编码
- 车牌限行C语言雾霾指数,算法设计与程序实现判断车牌的单双号(背景知识)为了保障空气质量,减少雾霾,某市决定当空气污染严重时,实行汽车单双号限行,违反规定的车辆将予以处罚。如何让高清摄像-组卷网...
- 从外观来看微型计算机由哪几个部分组成,福师11春学期《计算机应用基础》在线作业一...
- python面试题 网络编程和并发(34道题)
- UVa 10387 - Billiard
- wav音频文件格式解析
- 学python最重要的是什么_学Python之前,什么最重要?
- Unity2D学习笔记Day14:靠近门时弹出对话框并播放录制动画
- 欧拉系统安装与部署NextCloud与常见部署问题解决以及数据盘迁移
- Scikit-Learn与 TensorFlow 机器学习实用指南 中文PDF 免费领取
- 基于微信小程序的二手汽车拍卖系统
- 发文章的期刊-山东省期刊