hdu2167 輪廓線動態規劃

2021-08-03 23:18:28 字數 1117 閱讀 2882

輸入比較難處理,周圍8格數字不可取。因為必須要記錄當前格左上角的數字有沒有取得情況,所以所以要在一般的輪廓線上加一位,並且換行時要更新一下狀態。如下圖:

狀態記錄及轉移

在取11格的數字時,我們需要判斷10,6,7,8格是否有取數字。在更新11格的狀態的同時,丟棄掉第6格的狀態值。在遇到換行時,第8格的狀態可以直接丟棄,但是我們要虛擬出乙個新的格,方便下一次的狀態轉移。這題要理解多加的狀態,以及換行時的狀態變化。此時的狀態記錄已經類似於下面說的輪廓線了。**如下:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define ll long long

ll dp[2][1

<<16];

int main()

for(int i = 1;ifor(int j = 0;jscanf("%lld",&dat[i][j]);}}

memset(dp,-1,sizeof(dp));

dp[0][0] = 0;

int cur = 0;

for(int i = 0;ifor(int j = 0;jfor(int k = 0;k

<1);k++)

}else

if(j==n-1) // 只需第一 第二 最後位

}else}}

memset(dp[cur],-1,sizeof(dp[cur]));

cur = 1^cur;

//cout << dp[cur][1] << endl;}}

ll ans = 0;

for(int i = 0;i

<1);i++)

printf("%lld\n",ans);

}return

0;}

(26)輪廓發現

輪廓發現 區別於輪廓和邊緣的概念,輪廓也是有一定梯度層次的,有大的小的不同的輪廓 輪廓發現是基於影象邊緣提取的基礎尋找物件輪廓的方法。所以邊緣提取的閾值選定會影響最終輪廓發現結果。api介紹 findcontours發現輪廓 在灰度影象上進行輪廓發現 cv findcontours inputout...

27 輪廓發現

輪廓發現是基於影象邊緣提取的基礎,尋找物件輪廓的方法。所以邊緣提取的閾值的選定會影響最終輪廓發現的結果。include include include using namespace cv using namespace std int thresholdvlaue 100 int threshol...

29 輪廓發現

輪廓發現是基於影象邊緣提取的基礎尋找物件輪廓的方法,所以邊緣提取的閾值選定會影響最終輪廓發現結果 cv findcontours inputoutputarray binimg,輸入影象,非0的畫素被看成1,0的畫素值保持不變,8 bit outputarrayofarrays contours,全...