这个题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,记忆化搜索的更多相关文章

  1. UVa 10118 记忆化搜索 Free Candies

    假设在当前状态我们第i堆糖果分别取了cnt[i]个,那么篮子里以及口袋里糖果的个数都是可以确定下来的. 所以就可以使用记忆化搜索. #include <cstdio> #include & ...

  2. uva 707(记忆化搜索)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21261 思路:此题需要记忆化搜索,dp[x][y][t]表示当前状 ...

  3. UVa 10400 记忆化搜索

    #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> us ...

  4. Substring Uva 11468_记忆化搜索 + AC自动机

    Code: #include<cstdio> #include<cstring> #include<queue> using namespace std; cons ...

  5. UVa 10118 Free Candies (记忆化搜索+哈希)

    题意:有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果,如果篮子里有两个相同的糖果, 那么就可以把这两个(一对)糖果放进自己的口袋里,问最多能拿走 ...

  6. uva 10581 - Partitioning for fun and profit(记忆化搜索+数论)

    题目链接:uva 10581 - Partitioning for fun and profit 题目大意:给定m,n,k,将m分解成n份,然后依照每份的个数排定字典序,而且划分时要求ai−1≤ai, ...

  7. UVA - 10118Free Candies(记忆化搜索)

    题目:UVA - 10118Free Candies(记忆化搜索) 题目大意:给你四堆糖果,每一个糖果都有颜色.每次你都仅仅能拿随意一堆最上面的糖果,放到自己的篮子里.假设有两个糖果颜色同样的话,就行 ...

  8. UVA - 10917 - Walk Through the Forest(最短路+记忆化搜索)

    Problem    UVA - 10917 - Walk Through the Forest Time Limit: 3000 mSec Problem Description Jimmy exp ...

  9. UVa 10285 Longest Run on a Snowboard - 记忆化搜索

    记忆化搜索,完事... Code /** * UVa * Problem#10285 * Accepted * Time:0ms */ #include<iostream> #includ ...

随机推荐

  1. 201521123095《java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结上课内容. 对于一个系统中,对于名词大多为类或属性,对于动词大多为方法. 1.3 注释的应用 使用类的注释与 ...

  2. 201521123093 java 第二周学习总结

    201521123093 <java程序设计> 第二周学习总结 一.第二周学习总结 答:(1)关于进一步使用码云管理代码,本周才真正学会了如何将Eclipse里的代码上传到码云中,并且能够 ...

  3. 201521123110《Java程序设计》第14周学习总结

    1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 2. 使用JDBC连接数据库与Statement 2.1 使用Statement操作数据库.(粘贴一段你认为比较有价值的代码,出现学 ...

  4. 源码跟读,Spring是如何解析和加载xml中配置的beans

    Spring版本基于: 跟踪代码源码基于: https://github.com/deng-cc/KeepLearning commit id:c009ce47bd19e1faf9e07f12086c ...

  5. MongoDB的备份和部署 高级功能索引,聚合复制,分片

    创建备份 MongoDB 数据转储 为了在 MongoDB 中创建数据库备份,需要使用 mongodump 命令.该命令会将服务器上的所有数据都转储到 dump 目录中.你可以使用很多选项来限制转储的 ...

  6. 基于FPGA的腐蚀膨胀算法实现

    本篇文章我要写的是基于的腐蚀膨胀算法实现,腐蚀膨胀是形态学图像处理的基础,,腐蚀在二值图像的基础上做"收缩"或"细化"操作,膨胀在二值图像的基础上做" ...

  7. hadoop各个类及其作用

    1.基础包(包括工具包和安全包) 包括工具和安全包.其中,hdfs.util包含了一些HDFS实现需要的辅助数据结构:hdfs.security.token.block和hdfs.security.t ...

  8. android动画的实现过程

    先上自己的测试代码,有参考apidemo中的AnimationDrawable中的方法 public class AnimateActivity extends Activity { @Overrid ...

  9. Kafka快速上手(2017.9官方翻译)

    为了帮助国人更好了解.上手kafka,特意翻译.修改了个文档.官方Wiki : http://kafka.apache.org/quickstart 快速开始 本教程假定您正在开始新鲜,并且没有现有的 ...

  10. 使用C语言和Java分别实现冒泡排序和选择排序

    经典排序算法--冒泡和选择排序法 Java实现冒泡排序 基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素放到顶端,最终达到完全有序,首先看个动图: 我们要清楚 ...