時間限制: 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 #include3view codeusing
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 }
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顆黑色棋子,有兩個空白地帶,任何一顆黑白棋子都可以向上下左右四個方向移動到相鄰的空格,這叫行棋一步,黑白雙方交替走棋,任意一方可以先走,如果某個時刻使得任意一種顏色的棋子形成四個一線 包括斜線 這樣的狀態為...