No Rules Rules

행렬 곱셈 순서 (feat. 백준, 11049번) 본문

생활/코테

행렬 곱셈 순서 (feat. 백준, 11049번)

개발하는 완두콩 2022. 8. 16. 22:01
728x90
반응형

행렬 곱셈 순서
https://www.acmicpc.net/problem/11049

 

11049번: 행렬 곱셈 순서

첫째 줄에 입력으로 주어진 행렬을 곱하는데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 231-1 보다 작거나 같은 자연수이다. 또한, 최악의 순서로 연산해도 연산 횟수가 231-1보다 작거나 같

www.acmicpc.net

 

반응형

 

#include<iostream>
#include<cmath>
using namespace std;
int matrix[501][2], dp[501][501];
int main()
{
	ios::sync_with_stdio(false), cin.tie(NULL);
	register int N;
	cin >> N;
	for (register int i = 1, r, c; i <= N; ++i)
		cin >> r >> c, matrix[i][0] = r, matrix[i][1] = c;
	for (register int i = 1, j, k; i < N; i++)
		for (j = 1; i + j <= N; j++) {
			dp[j][i + j] = static_cast<int>(1e9);
			for (k = j; k <= i + j; k++)
				dp[j][i + j] = min(dp[j][i + j], dp[j][k] + dp[k + 1][i + j] + matrix[j][0] * matrix[k][1] * matrix[i + j][1]);
		}
	cout << dp[1][N];
	return 0;
}
// *&)*@*
728x90
반응형
Comments