题目:
往八个方向旋转棋盘,要求中间的八个相同,求最小步数,以及如何移动。
分析:
- IDA*
- 启发函数 深度 + 不相同个数 > maxd 就退出。
#include<bits/stdc++.h>
#define LL long long
using namespace std;
/*
00 01
02 03
04 05 06 07 08 09 10
11 12
13 14 15 16 17 18 19
20 21
22 23
*/
int line[8][7] = {
{
0, 2, 6, 11, 15, 20, 22}, //A 0
{
1, 3, 8, 12, 17, 21, 23}, //B 1
{
10, 9, 8, 7, 6, 5, 4}, //C 2
{
19, 18, 17, 16, 15, 14, 13}, //D 3
{
23, 21, 17, 12, 8, 3, 1}, //E 4
{
22, 20, 15