100 pts,但对估价函数有点疑问
查看原帖
100 pts,但对估价函数有点疑问
824868
Sunset_afterglow楼主2025/7/22 10:09
int g(int u ,int v ,int x ,int y) {
	//在当前矩阵 c 的情况下,空位转移至 (u ,v) 的最小代价
	swap(c[u][v] ,c[x][y]);
	int cm = 0;
	for(int i = 1;i <= 5;++ i)
		for(int j = 1;j <= 5;++ j)
			if(c[i][j] != arr[i - 1][j - 1]) ++ cm;
	swap(c[u][v] ,c[x][y]);
	return cm / 3 * 2;
}

这个是 100pts 的估价函数。

int g(int u ,int v ,int x ,int y) {
	//在当前矩阵 c 的情况下,空位转移至 (u ,v) 的最小代价
	swap(c[u][v] ,c[x][y]);
	int cm = 0;
	for(int i = 1;i <= 5;++ i)
		for(int j = 1;j <= 5;++ j)
			if(c[i][j] != arr[i - 1][j - 1]) ++ cm;
	swap(c[u][v] ,c[x][y]);
	return cm / 2;
}

这个是 60pts 的估价函数,TLE 了。
为什么第一个是对的,第二个是错的?

2025/7/22 10:09
加载中...