uva 10118,记忆化搜索
这个题debug了长达3个小时,acm我不能放弃,我又回来了的第一题!
一开始思路正确,写法不行,结果越改越乱
看了网上某神的代码,学习了一下
coding+debug:4小时左右,记忆化搜索+dp类型第一题
/*
* Author: Bingo
* Created Time: 2015/3/2 21:23:20
* File Name: uva10118.cpp
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <time.h>
using namespace std;
const int maxint = -1u>>;
int dp[][][][];
int a[][];
int f[];
int n;
int ans;
int ok(int i,int j,int p,int q){
int m[];
memset(m,,sizeof(m));
int top=;
for (int t=;t<i;t++)
m[top++]=a[][t];
for (int t=;t<j;t++)
m[top++]=a[][t];
for (int t=;t<p;t++)
m[top++]=a[][t];
for (int t=;t<q;t++)
m[top++]=a[][t];
sort(m,m+top);
int cnt=,tans=;
for (int t=;t<top;){
if (m[t]==m[t+]){
tans++;
t+=;
}else {
cnt++;
t++;
}
}
if (cnt<=){
ans=max(ans,tans);
return ;
}
return ;
}
int dfs(int i,int j,int p,int q){
if (i==n&&j==n&&p==n&&q==n) return ;
if (i<n){
i++;
if(ok(i,j,p,q)) {
if (dp[i][j][p][q]){
ans=max(ans,dp[i][j][p][q]);
dp[i][j][p][q]=ans;
}else {dp[i][j][p][q]=ans;dfs(i,j,p,q);}
}
}
if (j<n){
j++;
if(ok(i,j,p,q)) {
if (dp[i][j][p][q]){
ans=max(ans,dp[i][j][p][q]);
dp[i][j][p][q]=ans;
}else {dp[i][j][p][q]=ans;dfs(i,j,p,q);}
}
}
if (p<n){
p++;
if(ok(i,j,p,q)) {
if (dp[i][j][p][q]){
ans=max(ans,dp[i][j][p][q]);
dp[i][j][p][q]=ans;
}else {dp[i][j][p][q]=ans;dfs(i,j,p,q);}
}
}
if (q<n){
q++;
if(ok(i,j,p,q)) {
if (dp[i][j][p][q]){
ans=max(ans,dp[i][j][p][q]);
dp[i][j][p][q]=ans;
}else {dp[i][j][p][q]=ans;dfs(i,j,p,q);}
}
}
}
int main () {
while(cin>>n&&n){
for (int i=;i<n;i++) {
cin >> a[][i]>>a[][i]>>a[][i]>>a[][i];
}
memset(dp,,sizeof(dp));
ans=;
memset(f,,sizeof(f));
//ok(3,3,3,3);
dfs(,,,);
cout << ans<<endl;
}
return ;
}
uva 10118,记忆化搜索的更多相关文章
- UVa 10118 记忆化搜索 Free Candies
假设在当前状态我们第i堆糖果分别取了cnt[i]个,那么篮子里以及口袋里糖果的个数都是可以确定下来的. 所以就可以使用记忆化搜索. #include <cstdio> #include & ...
- uva 707(记忆化搜索)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21261 思路:此题需要记忆化搜索,dp[x][y][t]表示当前状 ...
- UVa 10400 记忆化搜索
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> us ...
- Substring Uva 11468_记忆化搜索 + AC自动机
Code: #include<cstdio> #include<cstring> #include<queue> using namespace std; cons ...
- UVa 10118 Free Candies (记忆化搜索+哈希)
题意:有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果,如果篮子里有两个相同的糖果, 那么就可以把这两个(一对)糖果放进自己的口袋里,问最多能拿走 ...
- uva 10581 - Partitioning for fun and profit(记忆化搜索+数论)
题目链接:uva 10581 - Partitioning for fun and profit 题目大意:给定m,n,k,将m分解成n份,然后依照每份的个数排定字典序,而且划分时要求ai−1≤ai, ...
- UVA - 10118Free Candies(记忆化搜索)
题目:UVA - 10118Free Candies(记忆化搜索) 题目大意:给你四堆糖果,每一个糖果都有颜色.每次你都仅仅能拿随意一堆最上面的糖果,放到自己的篮子里.假设有两个糖果颜色同样的话,就行 ...
- UVA - 10917 - Walk Through the Forest(最短路+记忆化搜索)
Problem UVA - 10917 - Walk Through the Forest Time Limit: 3000 mSec Problem Description Jimmy exp ...
- UVa 10285 Longest Run on a Snowboard - 记忆化搜索
记忆化搜索,完事... Code /** * UVa * Problem#10285 * Accepted * Time:0ms */ #include<iostream> #includ ...
随机推荐
- 201521123095 《Java程序设计》第6周学习总结
1.本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面 ...
- 201521123093 java 第十一周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- eclipse 项目引入第三方jar包 3种方法
我们在用Eclipse开发程序的时候,经常要用到第三方jar包.引入jar包不是一个小问题,由于jar包位置不清楚,而浪费时间.下面配图说明3种Eclipse引入jar包的方式. 1.最常用的普通操作 ...
- python之并发编程之多进程
一.共享数据 进程间通信应该尽量避免使用本节所讲的共享数据方式 from multiprocessing import Manager,Process,Lock def work(dic,mutex) ...
- phoenix
phoenix(直译做凤凰)的操作sql是通过jdbc发送到HBase的.phoenix的查询语句会转化为hbase的scan操作和服务器端的过滤器.如果我们手工使用HBase的api去写这些代码,也 ...
- 【轉】JS,Jquery获取各种屏幕的宽度和高度
Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...
- Coin Change (IV) (dfs)
Coin Change (IV) Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu [Subm ...
- 【JAVA零基础入门系列】Day4 变量与常量
这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...
- webpack2使用ch8-loader解析less less自动添加浏览器前缀
1 目录结构 安装依赖 "less": "^2.7.2","less-loader": "^4.0.3", 2 web ...
- mysq参数sql_safe_updates限制范围
在mysql运维中出现过不少因为update/delete条件错误导致数据被误更新或者删除的case,为避免类似问题的发生,可以用sql_safe_updates参数来对update/delete做限 ...