這題想了好久都是蒙的,完全無從下手,後來看了題解,才發現自己忽略了乙個東西就是那個圖,另外還理解錯了
題意,注意他要求的是封閉路徑的長度,而不是所佔的格仔的數目,然後看那個圖可以知道每個斜線的長度是二,
套用腦子聰明的人的話就是很容易想到把矩陣擴充為原理的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