1004 四子連棋 未完成

2021-09-07 10:48:52 字數 2644 閱讀 2538

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold

題解檢視執行結果

description

在乙個4*4的棋盤上擺放了14顆棋子,其中有7顆白色棋子,7顆黑色棋子,有兩個空白地帶,任何一顆黑白棋子都可以向上下左右四個方向移動到相鄰的空格,這叫行棋一步,黑白雙方交替走棋,任意一方可以先走,如果某個時刻使得任意一種顏色的棋子形成四個一線(包括斜線),這樣的狀態為目標棋局。●○

●○●○

●●○●

○○●○

輸入描述 

input description

從檔案中讀入乙個4*4的初始棋局,黑棋子用b表示,白棋子用w表示,空格地帶用o表示。
輸出描述 

output description

用最少的步數移動到目標棋局的步數。

樣例輸入 

sample input

bwbo

wbwb

bwbw

wbwo

樣例輸出 

sample output

資料範圍及提示 

data size & hint

hi分類標籤 tags 點此展開 

1 #include2 #include3

using

namespace

std;

4const

int maxn=10;5

intmap[maxn][maxn];

6int

vis[maxn][maxn][maxn][maxn];

7int

kong1x,kong1y;

8int

kong2x,kong2y;

9int hang[maxn];//

儲存每一行有多少個黑棋子

10int

lie[maxn];

11int leftdjx;//

左對角線

12int rightdjx;//

右對角線

13int ans=0x7fffffff;14

int xx[5]=;

15int yy[5]=;

16int how;//

1表示應該走黑棋 2表示白棋

17void dfs(int k1x,int k1y,int k2x,int k2y,int

step)

1827}28

if(step>ans)

29return;30

for(int i=0;i<4;i++)

3157 vis[k1x][k1y][wx][wy]=1

;58 map[k1x][k1y]=map[wx][wy];

59 map[wx][wy]=2

;60 dfs(wx,wy,k2x,k2y,step+1

);61

/*if(map[wx][wy]==1)

62how=0;

63else if(map[wx][wy]==0)

64how=1;

*/65 vis[k1x][k1y][wx][wy]=0

;66 map[wx][wy]=map[k1x][k1y];

67 map[k1x][k1y]=2;68

if(flag==1)69

83}84}

85for(int i=0;i<4;i++)

86112 vis[k2x][k2y][wx][wy]=1

;113 map[k2x][k2y]=map[wx][wy];

114 map[wx][wy]=2

;115 dfs(k1x,k1y,wx,wy,step+1

);116

/*if(map[wx][wy]==1)

117how=0;

118else if(map[wx][wy]==0)

119how=1;

*/120 vis[k2x][k2y][wx][wy]=0

;121 map[wx][wy]=map[k2x][k2y];

122 map[k2x][k2y]=2

;123

if(flag==1

)124

138}

139}

140}

141int

main()

142157

else

if(c=='w'

)158

161else

162169

else

170174

}175

}176

}177 how=2

;178 dfs(kong1x,kong1y,kong2x,kong2y,0

);179 printf("%d"

,ans);

180return0;

181 }

view code

wikioi1004 四子連棋

題目描述 description 在乙個4 4的棋盤上擺放了14顆棋子,其中有7顆白色棋子,7顆黑色棋子,有兩個空白地帶,任何一顆黑白棋子都可以向上下左右四個方向移動到相鄰的空格,這叫行棋一步,黑白雙方交替走棋,任意一方可以先走,如果某個時刻使得任意一種顏色的棋子形成四個一線 包括斜線 這樣的狀態為...

codevs 1004 四子連棋

1004 四子連棋 時間限制 1 s 空間限制 128000 kb 題目等級 gold題解 題目描述description 在乙個4 4的棋盤上擺放了14顆棋子,其中有7顆白色棋子,7顆黑色棋子,有兩個空白地帶,任何一顆黑白棋子都可以向上下左右四個方向移動到相鄰的空格,這叫行棋一步,黑白雙方交替走棋...

codevs 1004 四子連棋

題目描述 description 在乙個4 4的棋盤上擺放了14顆棋子,其中有7顆白色棋子,7顆黑色棋子,有兩個空白地帶,任何一顆黑白棋子都可以向上下左右四個方向移動到相鄰的空格,這叫行棋一步,黑白雙方交替走棋,任意一方可以先走,如果某個時刻使得任意一種顏色的棋子形成四個一線 包括斜線 這樣的狀態為...