發表文章

目前顯示的是有「IDA*」標籤的文章

[TIOJ] 1198. 8-puzzle

題目連結: http://tioj.infor.org/problems/1198 經典的8-puzzle問題,那就來寫個IDA*吧,不過要注意一下你推過來就別推回去,這樣是沒意義的XD(其實就是各種剪枝然後dfs) #include <bits/stdc++.h> using namespace std; #define INF 21474836 int final[3][3]; int cur[3][3]; int dx[]={0,0,1,-1}, dy[]={1,-1,0,0}; int pre[]={1,0,3,2}; int ida_star(int,int,int); inline bool isOK(int,int); int main(){ cin.tie(0);ios_base::sync_with_stdio(0); for(int i=0;i<3;i++)for(int j=0;j<3;j++)cin>>cur[i][j]; for(int i=0;i<3;i++)for(int j=0;j<3;j++)cin>>final[i][j]; for(int i=1;i<=INF;i*=2){ int test=ida_star(0,i,-1); if(test!=INF){ cout<<test; break; } } return 0; } int ida_star(int cnt, int MAX,int howto){ int xx,yy,h=0;bool flag=1; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(cur[i][j]==0){xx=i;yy=j...