codevs 1004 四子連棋

2022-04-04 21:59:59 字數 1453 閱讀 8338

時間限制: 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迭代加寬搜尋 

屠龍寶刀點選就送

#include #include 

#include

using

namespace

std;

int ans=1,map[5][5

];bool flag=false

;int fx[5]=,fy[5]=,x1,y1,x2,y2;

bool

check()

if(map[1][1]==map[2][2]&&map[2][2]==map[3][3]&&map[3][3]==map[4][4]) return

true

;

if(map[4][1]==map[3][2]&&map[3][2]==map[2][3]&&map[2][3]==map[1][4]) return

true

;

return

false;}

void dfs(int a,int b,int c,int d,int now,int

col)

if(now>ans) return

;

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

int cc=c+fx[i],dd=d+fy[i];

if(cc>=1&&cc<=4&&dd>=1&&dd<=4&&map[cc][dd]!=col)

}}int

main()

else

if(flag==true

)

map[i][j]=3

; }}}

for(;ans;ans++)

return0;

}

codevs 1004 四子連棋

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

codevs 1004 四子連棋

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

Codevs 1004 四子連棋

時間限制 1 s 空間限制 128000 kb 題目等級 gold 在乙個4 4的棋盤上擺放了14顆棋子,其中有7顆白色棋子,7顆黑色棋子,有兩個空白地帶,任何一顆黑白棋子都可以向上下左右四個方向移動到相鄰的空格,這叫行棋一步,黑白雙方交替走棋,任意一方可以先走,如果某個時刻使得任意一種顏色的棋子形...