求助代码差异
  • 板块学术版
  • 楼主liuzimingc
  • 当前回复20
  • 已保存回复20
  • 发布时间2024/10/20 19:48
  • 上次更新2024/10/20 21:12:13
查看原帖
求助代码差异
421781
liuzimingc楼主2024/10/20 19:48

RT。下面是两份我认为功能完全一样的代码,但是只有第一个是对的:

	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) f[j][j] = nxt[j][a[i][j]];
		for (int j = 1; j <= m; j++) nxt[j][a[i][j]] = i;
		for (int len = 2; len <= m; len++)
			for (int l = 1; l + len - 1 <= m; l++) {
				int r = l + len - 1;
				f[l][r] = max({ f[l + 1][r], f[l][r - 1], nxt[l][a[i][r]], nxt[r][a[i][l]] });
			}
		for (int l = 1; l <= m; l++)
			for (int r = l; r <= m; r++)
				mx[l][r] = max(mx[l][r], f[l][r]);
		for (int l = 1; l <= m; l++)
			for (int r = l; r <= m; r++)
				ans = max(ans, (r - l + 1) * (i - mx[l][r]));
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) f[i][j][j] = nxt[j][a[i][j]];
		for (int j = 1; j <= m; j++) nxt[j][a[i][j]] = i;
		for (int len = 2; len <= m; len++)
			for (int l = 1; l + len - 1 <= m; l++) {
				int r = l + len - 1;
				f[i][l][r] = max({ f[i][l + 1][r], f[i][l][r - 1], nxt[l][a[i][r]], nxt[r][a[i][l]], f[i - 1][l][r] });
			}
		for (int l = 1; l <= m; l++)
			for (int r = l; r <= m; r++)
				ans = max(ans, (r - l + 1) * (i - f[i][l][r]));
	}

不是很懂。

2024/10/20 19:48
加载中...