多线程DP 三取方格数

2024-06-14 16:18
文章标签 dp 多线程 方格 三取

本文主要是介绍多线程DP 三取方格数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

描述: 

设有N*N的方格图,我们将其中的某些方格填入正整数,而其他的方格中放入0。

某人从图得左上角出发,可以向下走,也可以向右走,直到到达右下角。

在走过的路上,他取走了方格中的数。(取走后方格中数字变为0)

此人从左上角到右下角共走3次,试找出3条路径,使得取得的数总和最大。


输入格式:

第一行:N(4<=N<=20)

接下来一个N*N的矩阵,矩阵中每个元素不超过80,不小于0 

  

输出格式:

一行,表示最大的总和。



样例输入: 

4

1 2 3 4

2 1 3 4

1 2 3 4

1 3 2 4


样例输出: 
 

39

 

#include <iostream>
#include <cstring>
using namespace std;#define SIZE 30int DP[SIZE][SIZE][SIZE][SIZE];
int matrix[SIZE][SIZE];int main(){int size;int steps;int temp;memset( DP,     0, sizeof( DP ) );memset( matrix, 0, sizeof( matrix ) );cin >> size;steps = size * 2 - 1;for( int raw = 1; raw <= size; ++raw ){for( int col = 1; col <= size; ++col ){cin >> matrix[raw][col];}}DP[1][1][1][1] = matrix[1][1];for( int step = 1; step <= steps; ++step ){for( int x1 = 1; x1 <= min( step, size ); ++x1 ){for( int x2 = 1; x2 <= min( step, size ); ++x2 ){for( int x3 = 1; x3 <= min( step, size ); ++x3 ){temp = matrix[x1][step - x1 + 1] +matrix[x2][step - x2 + 1] +matrix[x3][step - x3 + 1];if( x1 == x2 )temp -= matrix[x2][step - x2 + 1];if( x1 == x3 )temp -= matrix[x3][step - x3 + 1];if( x2 == x3 )temp -= matrix[x3][step - x3 + 1];if( x1 == x2 && x2 == x3 )temp += matrix[x1][step - x1 + 1];for( int i = -1; i <= 0; ++i ){for( int j = -1; j <= 0; ++j ){for( int k = -1; k <= 0; ++k ){DP[step][x1][x2][x3] = max( DP[step][x1][x2][x3],DP[step - 1][x1 + i][x2 + j][x3 + k] + temp );}}}}}}}cout << DP[steps][size][size][size] << endl;return 0;}


这篇关于多线程DP 三取方格数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060894

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Python多进程、多线程、协程典型示例解析(最新推荐)

《Python多进程、多线程、协程典型示例解析(最新推荐)》:本文主要介绍Python多进程、多线程、协程典型示例解析(最新推荐),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 目录一、multiprocessing(多进程)1. 模块简介2. 案例详解:并行计算平方和3. 实现逻

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir