RE求助
查看原帖
RE求助
374769
Epi4any楼主2022/8/17 15:59

做完石子合并想这道题做了,然后一发交上去3个RE:

#include <iostream>
#include <cstring>
using namespace std;

#define MAXN 305

int n, tmp;
int a[MAXN], sum[MAXN], dmin[MAXN][MAXN];

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) scanf("%d", &a[i]), a[n + i] = a[i];

	memset(dmin, 0x33, sizeof(dmin));
	for (int i = 1; i < 2 * n; i++) dmin[i][i] = 0;
	for (int i = 1; i < 2 * n; i++) sum[i] = sum[i - 1] + a[i];

	for (int i = 1; i <= n; i++) for (int l = 1, r = l + i; r < n * 2; l++, r++) {
			tmp = sum[r] - sum[l - 1];
			for (int k = l; k < r; k++) {
				dmin[l][r] = min(dmin[l][r], dmin[l][k] + dmin[k + 1][r] + tmp);
			}
		}

	int ans = 1 << 30;
	for (int i = 1; i <= n; i++) {
		ans = min(ans, dmin[i][i + n - 1]);
	}
	printf("%d\n", ans);
	return 0;
}
2022/8/17 15:59
加载中...