題目鏈結
problem:1191memory:568ktime:16mslanguage:c++result:accepted
解題報告:
1、公式可以利用數學方法化簡,就是求各個矩陣上的數(的和)的平方和最小。
2、每一次分割都有四種情況(遞迴)。
3、每一次分割的位置要進行比較,從而找到最佳。
#include #include#include
#include
using
namespace
std;
int s[9][9];//
每個格仔的分數
int sum[9][9];//
(1,1)到(i,j)的矩形分數的和
int res[15][9][9][9][9];//
fun的記錄表
int calsum(int x1,int y1,int x2,int y2)//
(x1,y1)到(x2,y2)的矩形分數和
int fun(int n,int x1,int y1,int x2,int y2)//
以(x1,y1)為左上角,(x2,y2)為右下角的矩形的棋盤分割成n分後的最小平方和
for(a=x1;a)
for(b=y1;b)
res[n][x1][y1][x2][y2]=min;
return
min;
}int
main()
}double result=n*fun(n,1,1,8,8)-sum[8][8]*sum[8][8
]; printf(
"%.3f\n
",sqrt(result/(n*n)));
return0;
}
NYOJ 87 棋盤分割(記憶化搜尋)
時間限制 1000 ms 記憶體限制 65535 kb 難度 6 描述 將乙個 的棋盤進行如下分割 將原棋盤割下一塊矩形棋盤並使剩下部分也是矩形,再將剩下的部分繼續如此分割,這樣割了 n 1 次後,連同最後剩下的矩形棋盤共有n塊矩形棋盤。每次切割都只能沿著棋盤格仔的邊進行 原棋盤上每一格有乙個分值,...
pku 1191 棋盤分割 DP 記憶化搜尋
題意 中文省略.思路 黑說p116有講解,主要的狀態轉移方程為 橫著切 dp k x1 y1 x2 y2 min dp k 1 x1 y1 mid y2 dp 1 mid y1 x2 y2 dp k 1 mid y1 x2 y2 dp 1 x1 y1 mid y2 x1 1 mid x2 豎著切 d...
總結 遞迴 記憶化搜尋 遞迴
遞迴函式執行時分為函式 前進段和返回段,真正明白並時刻記住這個才真正掌握了遞迴。寫遞迴時三點 開始定義的 引數,結束條件 邊界 若干if語句 遞迴呼叫及 返回段運算 一般引數中總有乙個代表遞迴層數。遞迴結束返回時要考慮是否修改了全域性變數,並將其改回,這個是為回溯做準備。記憶化搜尋 解決了遞迴時大量...