p1199八數碼問題

2022-05-12 19:35:34 字數 1341 閱讀 9685

oj上簡化的八數碼問題,最強的資料僅僅是20步;

根據曼哈頓距離構造啟發函式;

主演算法:ida*;(使用方法好像不太對......)

未用位運算優化;

1 #include2 #include3 #include4 #include5 #include

6 #include7 #include8 #include

9 #include10 #include11 #include12 #include13 #include14

using

namespace

std;

15#define file "dealing"

16#define up(i,j,n) for(int i=(j);i<=(n);i++)

17#define pii pair18

#define ll long long

19namespace

io22

intread()

25while(ch>='

0'&&ch<='9')

26return f?-x:x;27}

28 }using

namespace

io;29

const

int maxn=10;30

char ch[maxn],en[maxn]=;

31int a[3][3

];32

int p[10][10]=,

34 ,

35 ,

36 ,

37 ,

38 ,

39 ,

40 ,

41 42

};43

int x[10],y[10

];44 inline int check(int a[3

])52

const

int dx[4]=,dy[4]=;

53bool flag=0;54

int ans=10000;55

int maxh=0;56

void dfs(int a[3],int

d)60

if(d+xx>maxh)return

;61 up(i,0,2)up(j,0,2)70

}71return;72

}73intmain()

84 printf("

%d\n

",ans);

85 cout<

the time has passed

"ms."

<

86return0;

87 }

view code

P1199 三國遊戲

小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將 n為偶數且不小於 4 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武將,一旦某...

P1199三國遊戲

眾所周知,三國題材的遊戲很多,小涵遇到了其中之一 傳送這個題顯然用貪心做,但是怎麼貪心?首先我們只知道計算機的策略,但我們不知道小涵的策略。所以我們要想小涵是怎麼挑的。計算機的策略是拆掉你每次選擇時最大的那一對,所以小涵當前能夠得到的最大默契值就是小涵所選武將那一行的次大值。為了得到這個次大值,下一...

P1199 三國遊戲

小涵很喜歡電腦遊戲,這些天他正在玩乙個叫做 三國 的遊戲。在遊戲中,小涵和計算機各執一方,組建各自的軍隊進行對戰。遊戲中共有 n 位武將 n為偶數且不小於 4 任意兩個武將之間有乙個 默契值 表示若此兩位武將作為一對組合作戰時,該組合的威力有多大。遊戲開始前,所有武將都是自由的 稱為自由武將,一旦某...