2010年6月21日 星期一

Problem 785 Grid Colouring,著色

這題就是 Problem 784 Maze Exploration 的進階版,只比它難一咪咪。

字元 'X' 這次代表框架,此題重點就在於要記錄它著色的字元以及位置,就如同 784 的字元 '*' 一樣,所以宣告陣列有些許的改變。C 語言程式碼如下:
#define ROW 33
#define COL 83
#define SIZE 300
struct point
{
char ch;
int i;
int j;
};
struct point p[SIZE];
char str[ROW][COL];
int index;
而函式也稍做修改,程式碼如下:
void visit(int i, int j, char ch)
{
str[i][j] = ch;

if (str[i - 1][j] == ' ') visit(i - 1, j, ch);
if (str[i + 1][j] == ' ') visit(i + 1, j, ch);
if (str[i][j - 1] == ' ') visit(i, j - 1, ch);
if (str[i][j + 1] == ' ') visit(i, j + 1, ch);
}
最後就是要記錄著色的字元以及位置,就請各位參考,在此就不再解說:
int n, len, line = 0, i;
index = 0;
while (gets(str[line]))
{
len = strlen(str[line]);
if (str[line][0] == '_')
{
for (i = 0; i < index; i ++)
visit(p[i].i, p[i].j, p[i].ch);
for (i = 0; i <= line; i ++)
puts(str[i]);
line = 0, index = 0; continue;
}
for (i = 0; i < len; i ++)
if (str[line][i] != ' ' && str[line][i] != 'X')
{ p[index].ch = str[line][i]; p[index].i = line; p[index].j = i; index ++; }
line ++;
}

By David.K

p785題目連結
回ACM題庫目錄
回首頁

沒有留言: