当前位置: 首页 > news >正文

P1004 方格取数(四维动态规划)

题目描述

设有N \times NN×N的方格图(N \le 9)(N9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00。如下图所示(见样例):

A
 0  0  0  0  0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B

某人从图的左上角的AA点出发,可以向下行走,也可以向右走,直到到达右下角的BB点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字00)。
此人从AA点到BB点共走两次,试找出22条这样的路径,使得取得的数之和为最大。

输入输出格式

输入格式:

 

输入的第一行为一个整数NN(表示N \times NN×N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。一行单独的00表示输入结束。

 

输出格式:

 

只需输出一个整数,表示22条路径上取得的最大的和。

 

输入输出样例

输入样例#1:  复制
8
2 3 13
2 6  6
3 5  7
4 4 14
5 2 21
5 6  4
6 3 15
7 2 14
0 0  0
输出样例#1:  复制
67

说明

NOIP 2000 提高组第四题

看成两个人走t j表示一个人的位置,k l表示另一个人的位置

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<vector>
#include<map>
#include<cmath>
const int maxn=1e5+5;
typedef long long ll;
using namespace std;
int Map[15][15];
int dp[15][15][15][15];
int main()
{   
   int n;
   cin>>n;
   memset(Map,0,sizeof(Map));
   int x,y,w;
   while(scanf("%d%d%d",&x,&y,&w)!=EOF)
   {
       if(x==0)
       {
           break;
    }
       Map[x][y]=w;
   }
   for(int t=1;t<=n;t++)
   {
       for(int j=1;j<=n;j++)
       {
           for(int k=1;k<=n;k++)
           {
               for(int l=1;l<=n;l++)
               {
                   
                   dp[t][j][k][l]=max(max(dp[t-1][j][k-1][l],dp[t][j-1][k-1][l]),max(dp[t][j-1][k][l-1],dp[t-1][j][k][l-1]))+Map[t][j]+Map[k][l];
                   if(t==k&&j==l)
                   {
                       dp[t][j][k][l]-=Map[t][j];
                }
            }
        }
    }
   }
   cout<<dp[n][n][n][n];

   return 0;
}

 

 

转载于:https://www.cnblogs.com/Staceyacm/p/11226548.html

相关文章:

  • SCRUM Day 8
  • 2.3_Database Interface ODBC组成原理
  • 石子合并(区间dp典型例题)
  • 石子合并2(环形求最优解 区间dp)
  • 恢复系统管理员密码的五大奇招
  • P1082 同余方程(拓展欧几里德)
  • Mac下eclipse安装SVN插件
  • 程序员真的很懒
  • 【Android应用开发】-(9)应用程序安装卸载原理
  • TCP/IP:网络因此互联
  • 公式输入较好的参考
  • K - Queries for Number of Palindromes(区间dp+容斥)
  • ASP.Net WebForm温故知新学习笔记:二、ViewState与UpdatePanel探秘
  • IDEA等全家桶设置Ctrl+滚轮调整字体大小
  • 怎样卸载外壳扩展的DLL?
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Akka系列(七):Actor持久化之Akka persistence
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java教程_软件开发基础
  • Java新版本的开发已正式进入轨道,版本号18.3
  • k8s如何管理Pod
  • MQ框架的比较
  • node入门
  • Sass Day-01
  • Sublime text 3 3103 注册码
  • underscore源码剖析之整体架构
  • vue--为什么data属性必须是一个函数
  • XForms - 更强大的Form
  • 多线程事务回滚
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 用Python写一份独特的元宵节祝福
  • 再次简单明了总结flex布局,一看就懂...
  • 阿里云服务器如何修改远程端口?
  • 整理一些计算机基础知识!
  • #14vue3生成表单并跳转到外部地址的方式
  • $.each()与$(selector).each()
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (ibm)Java 语言的 XPath API
  • (八)c52学习之旅-中断实验
  • (八)Spring源码解析:Spring MVC
  • (学习日记)2024.01.09
  • (转载)(官方)UE4--图像编程----着色器开发
  • .form文件_一篇文章学会文件上传
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net操作Excel出错解决
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • /*在DataTable中更新、删除数据*/
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @property @synthesize @dynamic 及相关属性作用探究
  • [145] 二叉树的后序遍历 js
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [bzoj2957]楼房重建