这个题debug了长达3个小时,acm我不能放弃,我又回来了的第一题!

一开始思路正确,写法不行,结果越改越乱

看了网上某神的代码,学习了一下

coding+debug:4小时左右,记忆化搜索+dp类型第一题

  1. /*
  2. * Author: Bingo
  3. * Created Time: 2015/3/2 21:23:20
  4. * File Name: uva10118.cpp
  5. */
  6. #include <iostream>
  7. #include <cstdio>
  8. #include <cstdlib>
  9. #include <cstring>
  10. #include <cmath>
  11. #include <algorithm>
  12. #include <string>
  13. #include <vector>
  14. #include <stack>
  15. #include <queue>
  16. #include <set>
  17. #include <time.h>
  18. using namespace std;
  19. const int maxint = -1u>>;
  20. int dp[][][][];
  21. int a[][];
  22. int f[];
  23. int n;
  24. int ans;
  25. int ok(int i,int j,int p,int q){
  26. int m[];
  27. memset(m,,sizeof(m));
  28. int top=;
  29. for (int t=;t<i;t++)
  30. m[top++]=a[][t];
  31. for (int t=;t<j;t++)
  32. m[top++]=a[][t];
  33. for (int t=;t<p;t++)
  34. m[top++]=a[][t];
  35. for (int t=;t<q;t++)
  36. m[top++]=a[][t];
  37. sort(m,m+top);
  38. int cnt=,tans=;
  39. for (int t=;t<top;){
  40. if (m[t]==m[t+]){
  41. tans++;
  42. t+=;
  43. }else {
  44. cnt++;
  45. t++;
  46. }
  47. }
  48. if (cnt<=){
  49. ans=max(ans,tans);
  50. return ;
  51. }
  52. return ;
  53. }
  54. int dfs(int i,int j,int p,int q){
  55. if (i==n&&j==n&&p==n&&q==n) return ;
  56. if (i<n){
  57. i++;
  58. if(ok(i,j,p,q)) {
  59. if (dp[i][j][p][q]){
  60. ans=max(ans,dp[i][j][p][q]);
  61. dp[i][j][p][q]=ans;
  62. }else {dp[i][j][p][q]=ans;dfs(i,j,p,q);}
  63. }
  64. }
  65. if (j<n){
  66. j++;
  67. if(ok(i,j,p,q)) {
  68. if (dp[i][j][p][q]){
  69. ans=max(ans,dp[i][j][p][q]);
  70. dp[i][j][p][q]=ans;
  71. }else {dp[i][j][p][q]=ans;dfs(i,j,p,q);}
  72. }
  73. }
  74. if (p<n){
  75. p++;
  76. if(ok(i,j,p,q)) {
  77. if (dp[i][j][p][q]){
  78. ans=max(ans,dp[i][j][p][q]);
  79. dp[i][j][p][q]=ans;
  80. }else {dp[i][j][p][q]=ans;dfs(i,j,p,q);}
  81. }
  82. }
  83. if (q<n){
  84. q++;
  85. if(ok(i,j,p,q)) {
  86. if (dp[i][j][p][q]){
  87. ans=max(ans,dp[i][j][p][q]);
  88. dp[i][j][p][q]=ans;
  89. }else {dp[i][j][p][q]=ans;dfs(i,j,p,q);}
  90. }
  91. }
  92. }
  93. int main () {
  94. while(cin>>n&&n){
  95. for (int i=;i<n;i++) {
  96. cin >> a[][i]>>a[][i]>>a[][i]>>a[][i];
  97. }
  98. memset(dp,,sizeof(dp));
  99. ans=;
  100. memset(f,,sizeof(f));
  101. //ok(3,3,3,3);
  102. dfs(,,,);
  103. cout << ans<<endl;
  104. }
  105. return ;
  106. }

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. 201521123076《Java程序设计》第1周学习总结

    一. 本章学习总结 1.了解了JDK,JVM,JRE的相关内容 JVM(Java Virtual Machine): Java虚拟机,*.java原始码,经过编译程序翻译为.class位码.JVM正是 ...

  2. 201521123094 《Java程序设计》第1周学习总结

    1. 本周学习总结 ① Java根据应用领域分为三大平台:Java SE.Java EE.Java ME.Java SE平台,作为各大平台的基础,它分成JVM/JRE/JDK/Java语言四个主要部分 ...

  3. java课设 五子棋代码编写(团队)

    1. 团队课程设计博客链接 http://www.cnblogs.com/yzb123/p/7063424.html 2.个人责模块或任务说明 1.主函数编写,设置图形界面 2,设置功能按钮 3.使用 ...

  4. Hyperledger Fabric 1.0 从零开始(二)——环境构建(公网)

    1:环境构建 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先 ...

  5. Sublime自定义语法

    以thinkphp框架的assign函数为例 在sublime\Data\Packages\PHP下 新建文件:assign.sublime-snippet 内容为 <snippet> & ...

  6. Servlet第四篇【request对象常用方法、应用】

    什么是HttpServletRequest HttpServletRequest**对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,**HTTP请求头中的所有信息都封装在这个对象中,开发人 ...

  7. vue+element搭建的后台管理系统

    最近工作不是很忙,自己在学习vue,在网上找了一个简单的项目练练手..... 这是本人的gitHub 上的项目地址:https://github.com/shixiaoyanyan/vue-admin ...

  8. GUI TextField

    GUI.TextField   public static function TextField(position: Rect, text: string): string; public stati ...

  9. JAVA_String、StringBuilder、StringBuffer区别

    String.StringBuilder.StringBuffer均为字符串 类 需要注意的一些问题 String StringBuilder StringBuffer 一旦创建,不能对其内容进行更改 ...

  10. WEP无线加密破解

    工具:Aircrack套件(airmon-ng.airodump-ng.aireplay-ng) 带有套件的操作系统:KaLi Linux.BackTrack.Beini(奶瓶)...等 1.开启无线 ...