P1032 字串變換 bfs

2021-09-02 15:19:56 字數 1540 閱讀 8936

由數字00組成的方陣中,有一任意形狀閉合圈,閉合圈由數字11構成,圍圈時只走上下左右44個方向。現要求把閉合圈內的所有空間都填寫成22.例如:6 \times 66×6的方陣(n=6n=6),塗色前和塗色後的方陣如下:

0 0 0 0 0 0

0 0 1 1 1 1

0 1 1 0 0 1

1 1 0 0 0 1

1 0 0 0 0 1

1 1 1 1 1 1

0 0 0 0 0 0

0 0 1 1 1 1

0 1 1 2 2 1

1 1 2 2 2 1

1 2 2 2 2 1

1 1 1 1 1 1

輸入格式:

每組測試資料第一行乙個整數n(1 \le n \le 30)n(1≤n≤30)

接下來nn行,由00和11組成的n \times nn×n的方陣。

方陣內只有乙個閉合圈,圈內至少有乙個00。

//感謝黃小u飲品指出本題資料和資料格式不一樣. 已修改(輸入格式)

輸出格式:

已經填好數字22的完整方陣。

輸入樣例#1:複製

6

0 0 0 0 0 0

0 0 1 1 1 1

0 1 1 0 0 1

1 1 0 0 0 1

1 0 0 0 0 1

1 1 1 1 1 1

輸出樣例#1:複製

0 0 0 0 0 0

0 0 1 1 1 1

0 1 1 2 2 1

1 1 2 2 2 1

1 2 2 2 2 1

1 1 1 1 1 1

題意:將閉合圈內的數字改為2.

**如下:

#include

#include

#include

#include

#include

using namespace std;

int mp[35][35];

int vis[35][35]; // 標記陣列

int fx[4]=;

int fy[4]=;

int n;

struct node

;queueq;

node p;

void bfs(int x,int y)}}

}int main()

}for(int i=0;i<=n+1;i=i+n+1) // 將第 i行 j 列 加上0

}for(int i=0;i<=n+1;i=i+n+1) // 將第 j 行 i 列 加上0

}bfs(0,0); // bfs 找出所有在圈外的0並標記

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

printf("\n");

}return 0;

}

P1032 字串變換 bfs

評測記錄 給若干個變化規則,表示a中的a xa x ax 子串可以變化為b xb x bx 中的子串,求至少要多少次變化才可以變為b子串。暴力廣蒐用map mapma p庫判重。include include include include include using namespace std q...

P1032 字串變換

思路 採用bfs 我們遍歷字串a的每個字元,判斷當前字串i位置之後可不可以替換,如果可以替換,我們就把替換後的字串 a 放入佇列。如果出現的我們想要的字串,根據bfs的性質,那麼就直接記錄此時的步數。1 include 2 include 3 include 4 include 5 include ...

P1032 字串變換

迭代加深難題 右手進入傳送門 大意是這樣的 給定兩個字串a,b以及至多六個變換規則 規則指a1 b1,a2 b2,在a中的子串 a1可以變換為b1,a2可以變換為 b2 求最少變換步數,若在10步 包含10步 以內能將a變換為b,則輸出最少的變換步數 否則輸出 no answer 看到題目要求的10...