这题的关键是如何存储信息
IDA*估计函数:找到一个未被删除的正方形并去掉所有边,但只记一次操作 一定小于等于实际
从当前的最小的正方形(使得搜索树小)开始枚举删去其中的边
代码(关键函数变量有注释)
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
int n,m,dif,totsq,totsti;
vector<int>stick[65];//the squares related to the stick
vector<int>square[65];//the sticks related to the square
int exi[65];//0:the square exists ; otherwise the square is incomplete
int t;
int estimate()//IDA* estimate
{
int temp[65];
memcpy(temp,exi,sizeof temp);
int ret=0;
for(int i=1;i<=totsq;++i)
{
if(temp[i]<0)continue;
++ret;
int sz=square[i].size();
for(int j=0;j<sz;++j)
{
int sti=square[