codevs1004 四子連棋

2022-05-20 06:42:19 字數 1263 閱讀 8585

今天覆習一下bfs,順便把之前一直沒a的四字連棋做了一下

這個題,我認為難點就在於移動棋子的一系列操作,太長了。

ps:不知道為啥,洛谷和codevs同時不待見getchar,在自己從codevs那裡拿了了些資料,手動測了一下,發現都對了,好迷

#include#include

#include

#include

using

namespace

std;

struct

inter,qaq;

int ans,h[4]=,z[4]=;

bool ha[(100003)<<1

];char s[5

];queue

qwq;

inline

int hash(in

x)inline

bool cha(int i,int j,int k,int

l)inline

bool

pan()

if(cha(qaq.a[1][1],qaq.a[2][2],qaq.a[3][3],qaq.a[4][4

]))

return1;

if(cha(qaq.a[1][4],qaq.a[2][3],qaq.a[3][2],qaq.a[4][1

]))

return1;

return0;

}inline

bool can(int x,int

y)inline

void move(int x,int

y) }

}}inline

void

bfs()

ha[hash(qaq)]=1

; qwq.pop();

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

for(int j=1;j<=4;j++)

if(qaq.a[i][j]==2

) move(i,j);

}}int

main()

}ter.

as=0,ter.ne=0

; qwq.push(ter);

ter.ne=1

; qwq.push(ter);

bfs();

if(!ans)

ans=1

; printf("%d

",ans);

}

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顆黑色棋子,有兩個空白地帶,任何一顆黑白棋子都可以向上下左右四個方向移動到相鄰的空格,這叫行棋一步,黑白雙方交替走棋,任意一方可以先走,如果某個時刻使得任意一種顏色的棋子形...