最開始,題目有說 數字範圍從1~ n*n 每個數字出現一次
所以我會開個pair陣列 叫pos 儲存每個數字的座標
然後建一個表 int ans[n*n] 顧名思義 用來存答案(誤
其實ans是用來存 跳到當前數值的最高華麗度 (不懂沒關係? 看下面操作
要先想到一件事 假設我今天要算 從最高點跳到第i點的最大華麗度 那我的答案將會是
max(ans[n*n]+dis(pos[n*n],pos[i]),ans[n*n-1]+dis(pos[n*n-1],pos[i]).........ans[i+1]+dis(pos[i+1],pos[i]))
// 因為第i點只能從比他高的地方跳過來
那我們要如何知道比他大的點的ans們(ans[n*n],ans[n*n-1].......ans[i+1])到底是多少
很簡單
ans[n*n] 必定是0
ans[n*n-1] 一定是從ans[n*n]來的 那就直接代公式就可以得到
以下的點一樣類推就好
複雜度 O(n^3)
不知道各位大神有沒有更好的解法orz