本人最开始一直超时,后来无意间发现启发函数写错,希望警示后人(大悲)
最初的错误版
inline int f(string str) {
int cnt = 0;
for (int i = 0; i < str.length(); i++) {
cnt += (str[i] - '1');
}
return cnt / 2;
}
第二个错误版
inline int f(string str) {
int cnt = 0;
for (int i = 0; i < str.length(); i++) {
cnt += (5 - (str[i] - '0'));
}
return cnt / 2;
}
最终正确版(哭)
inline int f(string str) {
int cnt = 0;
for (int i = 0; i < str.length(); i++) {
if (str[i] != '1')cnt += (5 - (str[i] - '0'));
}
return cnt / 2;
}