Codevs 1049 棋盤染色

2022-04-02 05:43:03 字數 1655 閱讀 8399

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold

題解有乙個5×5的棋盤,上面有一些格仔被染成了黑色,其他的格仔都是白色,你的任務的對棋盤一些格仔進行染色,使得所有的黑色格仔能連成一塊,並且你染色的格仔數目要最少。讀入乙個初始棋盤的狀態,輸出最少需要對多少個格仔進行染色,才能使得所有的黑色格仔都連成一塊。(注:連線是指上下左右四個方向,如果兩個黑色格仔只共有乙個點,那麼不算連線)

輸入描述 input description

輸入包括乙個5×5的01矩陣,中間無空格,1表示格仔已經被染成黑色。

輸出描述 output description

輸出最少需要對多少個格仔進行染色

樣例輸入 sample input

樣例輸出 sample output

這題真jb蛋疼

#include#include

#include

using

namespace

std;

int ans=0x7fffffff

;bool vis[10][10],color[10][10],now[10][10

];int e[4][2]=,,,};

bool v[10][10

];int

cnt,fr,num;

struct

nodepoint[

30];

bool check(int nx,int

ny) }

}void dfs(int

step)

if(nx&&ny)break

; }

check(nx,ny);

if(cnt==step+fr)ans=min(ans,step);

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

}}char ch[10

];int

main()}}

dfs(0);

printf("%d

",ans);

}

50分 爆搜

#include#include

#include

using

namespace

std;

int map[10][10],copy[10][10

],stan,first,cnt;

bool ans,vis[10][10

];char ch[10

];int e[4][2]=,,,};

void check(int x,inty)}

void dfs(int x,int y,int

k) }

}cnt=0

; memset(vis,

0,sizeof

(vis));

check(xx,yy);

if(cnt==now)

}if(ans||x==6)return

;

for(int i=y;i<=5;i++)

for(int i=x+1;i<=5;i++)

}}int

main()

}for(stan=0;stan<=25;stan++)}}

100分 迭代加深搜尋

Codevs 1049 棋盤染色

時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解有乙個5 5的棋盤,上面有一些格仔被染成了黑色,其他的格仔都是白色,你的任務的對棋盤一些格仔進行染色,使得所有的黑色格仔能連成一塊,並且你染色的格仔數目要最少。讀入乙個初始棋盤的狀態,輸出最少需要對多少個格仔進行染色,才能使得所...

codevs1049 棋盤染色

codevs1049 棋盤染色 試題描述 有乙個5 5的棋盤,上面有一些格仔被染成了黑色,其他的格仔都是白色,你的任務的對棋盤一些格仔進行染色,使得所有的黑色格仔能連成一塊,並且你染色的格仔數目要最少。讀入乙個初始棋盤的狀態,輸出最少需要對多少個格仔進行染色,才能使得所有的黑色格仔都連成一塊。注 連...

1049 棋盤染色

時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解檢視執行結果 有乙個5 5的棋盤,上面有一些格仔被染成了黑色,其他的格仔都是白色,你的任務的對棋盤一些格仔進行染色,使得所有的黑色格仔能連成一塊,並且你染色的格仔數目要最少。讀入乙個初始棋盤的狀態,輸出最少需要對多少個格仔進行染...