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 ...
随机推荐
- 201521123076《Java程序设计》第1周学习总结
一. 本章学习总结 1.了解了JDK,JVM,JRE的相关内容 JVM(Java Virtual Machine): Java虚拟机,*.java原始码,经过编译程序翻译为.class位码.JVM正是 ...
- 201521123094 《Java程序设计》第1周学习总结
1. 本周学习总结 ① Java根据应用领域分为三大平台:Java SE.Java EE.Java ME.Java SE平台,作为各大平台的基础,它分成JVM/JRE/JDK/Java语言四个主要部分 ...
- java课设 五子棋代码编写(团队)
1. 团队课程设计博客链接 http://www.cnblogs.com/yzb123/p/7063424.html 2.个人责模块或任务说明 1.主函数编写,设置图形界面 2,设置功能按钮 3.使用 ...
- Hyperledger Fabric 1.0 从零开始(二)——环境构建(公网)
1:环境构建 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先 ...
- Sublime自定义语法
以thinkphp框架的assign函数为例 在sublime\Data\Packages\PHP下 新建文件:assign.sublime-snippet 内容为 <snippet> & ...
- Servlet第四篇【request对象常用方法、应用】
什么是HttpServletRequest HttpServletRequest**对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,**HTTP请求头中的所有信息都封装在这个对象中,开发人 ...
- vue+element搭建的后台管理系统
最近工作不是很忙,自己在学习vue,在网上找了一个简单的项目练练手..... 这是本人的gitHub 上的项目地址:https://github.com/shixiaoyanyan/vue-admin ...
- GUI TextField
GUI.TextField public static function TextField(position: Rect, text: string): string; public stati ...
- JAVA_String、StringBuilder、StringBuffer区别
String.StringBuilder.StringBuffer均为字符串 类 需要注意的一些问题 String StringBuilder StringBuffer 一旦创建,不能对其内容进行更改 ...
- WEP无线加密破解
工具:Aircrack套件(airmon-ng.airodump-ng.aireplay-ng) 带有套件的操作系统:KaLi Linux.BackTrack.Beini(奶瓶)...等 1.开启无线 ...