矩阵最大权值


题目描述

现有一个n∗m大小的矩阵,矩阵中的每个元素表示该位置的权值。现需要从矩阵左上角出发到达右下角,每次移动只能向上下左右移动一格(不允许移动到曾经经过的位置)。求最后到达右下角时路径上所有位置的权值之和的最大值。

输入描述

第一行两个整数n、m(2≤n≤5,2≤m≤5​​​),分别表示矩阵的行数和列数;

接下来n​​​行,每行m个整数(−100≤​​整数≤100​​​),表示矩阵每个位置的权值。

输出描述

一个整数,表示权值之和的最大值。

输入样例

2 2 1 2 3 4

输出样例

8

代码:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int vis[1005][1005],Map[1005][1005];
int n,m,Max = 0;
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};
bool isValid(int x,int y){
	return x>=0&&x<n&&y>=0&&y<m&&!vis[x][y];
}
void dfs(int x,int y,int nowValue){
	if(x==n-1&&y==m-1){
		if(nowValue>Max){
			Max = nowValue;
		}
		return;
	}
	vis[x][y] = 1;
	for(int i = 0;i<4;i++){
		int nextx = x+dx[i];
		int nexty = y+dy[i];
		if(isValid(nextx,nexty)){
			int nextValue = nowValue+Map[nextx][nexty];
			dfs(nextx,nexty,nextValue);
		}
	}
	vis[x][y] = 0;
	
}
int main() {
	cin>>n>>m;
	for(int i = 0;i<n;i++){
		for(int j = 0;j<m;j++){
			cin>>Map[i][j];
		}
	}
	dfs(0,0,Map[0][0]);
	cout<<Max<<endl;
}
相关推荐
好奇龙猫10 分钟前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
sp_fyf_20241 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
ChoSeitaku1 小时前
链表交集相关算法题|AB链表公共元素生成链表C|AB链表交集存放于A|连续子序列|相交链表求交点位置(C)
数据结构·考研·链表
偷心编程1 小时前
双向链表专题
数据结构
香菜大丸1 小时前
链表的归并排序
数据结构·算法·链表
jrrz08281 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表
oliveira-time1 小时前
golang学习2
算法
@小博的博客2 小时前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
南宫生2 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法
懒惰才能让科技进步3 小时前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝