UVA705斜線牆內求封閉路徑,矩陣擴充與轉化

2021-07-05 00:18:44 字數 929 閱讀 3840

這題想了好久都是蒙的,完全無從下手,後來看了題解,才發現自己忽略了乙個東西就是那個圖,另外還理解錯了

題意,注意他要求的是封閉路徑的長度,而不是所佔的格仔的數目,然後看那個圖可以知道每個斜線的長度是二,

套用腦子聰明的人的話就是很容易想到把矩陣擴充為原理的2倍。

1 0     0 1

0 1     1 0

然後從八個方向搜,是零的都可以走,但是注意特判,因為斜著的方向又不符合的,這個很容易想到。

可以查一下大牛的題解。

雖然我並不是很理解為什麼四個方向搜就可以了,另外搜尋的時候,搜到邊界即不滿足條件,f=0,然而對於遞迴為什麼是那麼寫的,

以及為什麼f=0是在那裡,以我對於遞迴的認識,也並不能理解的很透徹,模仿大牛的**敲了一下**:

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long

using namespace std;

int w,h;

int dx[4]=,dy[4]=;

int grid[400][400];

int pos,f,sum,max;

void dfs(int x,int y)

}else

f=0;

}}int main()

{ int cas=0;

while(cin>>w)

{cin>>h;

if(!w&&!h) break;

getchar();

cas++;

memset(grid,0,sizeof(grid));

for(int i=0;i>s;

for(int j=0;j