int g(int u ,int v ,int x ,int y) {
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) {
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 了。
为什么第一个是对的,第二个是错的?