백준 11048 c++

magicdrill·2024년 7월 6일
0

백준 문제풀이

목록 보기
386/654

백준 11048 c++

dp 연습 시작해봤다. dp 문제중에서는 제일 쉬운듯 하다.
입력할 때의 N,M과 결과계산의 N,M을 따로 구했더니 범위지정에서 애로사항이 있었다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void input_maze(vector<vector<int>> &maze)
{
	int N, M, candy;
	int i, j;

	cin >> N >> M;
	maze.resize(N + 1, vector<int>(M + 1, 0));
	for (i = 1; i <= N; i++)
	{
		for (j = 1; j <= M; j++)
		{
			cin >> maze[i][j];
		}
	}

	/*for (i = 0; i <= N; i++)
	{
		for (j = 0; j <= M; j++)
		{
			cout << maze[i][j] << " ";
		}
		cout << "\n";
	}*/

	return;
}

void find_answer(vector<vector<int>> &maze)
{
	int i, j;
	int N = maze.size(), M = maze[0].size(), current;
	vector<vector<int>> dp(N, vector<int>(M, 0));

	for (i = 1; i < N; i++)
	{
		for (j = 1; j < M; j++)
		{
			current = maze[i][j];
			dp[i][j] = max(dp[i-1][j-1], max(dp[i-1][j], dp[i][j-1])) + current;
			//cout << "(i:" << i << "/j:" << j << "):" << dp[i][j] << " ";
		}
		//cout << "\n";
	}
	cout << dp[N-1][M-1] << "\n";

	/*for (i = 0; i < N; i++)
	{
		for (j = 0; j < M; j++)
		{
			cout << dp[i][j] << " ";
		}
		cout << "\n";
	}*/

	return;
}

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	vector<vector<int>> maze;

	input_maze(maze);
	find_answer(maze);

	return 0;
}

0개의 댓글