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 ...
随机推荐
- java201521123118《java程序设计》第3周总结
1. 本周学习 总结初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...
- 201521123025《java程序设计》第12周学习总结
#1. 本周学习总结 #2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. ...
- JAVA课程设计 计算器模拟程序 王华俊(201521123015)
1.团队课程设计博客链接 http://www.cnblogs.com/yuanj/p/7072137.html 2.个人负责模块或任务说明 GUI界面设计 各类之间拼接 3.自己的代码提交记录截图 ...
- Markdown 练习
一个例子: 例子开始 1. 本章学习总结 今天主要学习了三个知识点 封装 继承 多态 2. 书面作业 Q1. java HelloWorld命令中,HelloWorld这个参数是什么含义? 今天学了一 ...
- 读Zepto源码之Touch模块
大家都知道,因为历史原因,移动端上的点击事件会有 300ms 左右的延迟,Zepto 的 touch 模块解决的就是移动端点击延迟的问题,同时也提供了滑动的 swipe 事件. 读 Zepto 源码系 ...
- oracle 数据库管理--管理表空间和数据文件
一.概念表空间是数据库的逻辑组成部分.从物理上讲,数据库数据存放在数据文件中:从逻辑上讲,数据库数据则是存放在表空间中,表空间由一个或多个数据文件组成. 二.数据库的逻辑结构oracle中逻辑结构包括 ...
- Sql Server——数据的增删改
所谓数据的增删改就是在创建好数据库和表后向表中添加数据.删除表中的数据.更改表中的一些数据. 新增数据: 语法一: insert into 表名 values (数据内容) --这里需要 ...
- 关于C++中char 型变量的地址输出
在刚开始学习C/C++过程中,我们希望输出各个变量的地址来窥探一些我们"百思不得其解"的现象,例如搞清函数堆栈相关的程序内部秘密. 先看下面示例: #include<stdi ...
- 应用程序PING发出的是什么报文?
Ping位于用户层,一般用来测试一台主机是否可达,该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显 应答
- C - Coin Change (III)(多重背包 二进制优化)
C - Coin Change (III) Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...