IDA*一般方法
void dfs(int tmp[],int deep)//deep表示当前深度,temp_deep表示当前限定的最大深度,超过该深度,则不必继续下去 { if(flag) return; if(deep+8-check(tmp)>tmp_deep)//检查当前方案是否还有必要继续下去 return; if(check(tmp)==8) { flag=true; return; } for(int i=0;i<8;i++) { int arr1[30]; for(int t=0;t<24;t++) arr1[t]=tmp[t]; int tmp1=tmp[mov[i][0]]; for(int t=0;t<6;t++) { arr1[mov[i][t]]=arr1[mov[i][t+1]]; } arr1[mov[i][6]]=tmp1; way[deep]=(char)('A'+i); dfs(arr1,deep+1); if(flag) break; } }