遞迴,記憶化搜尋,(棋盤分割)

2022-04-01 08:57:05 字數 980 閱讀 4035

題目鏈結

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語句 遞迴呼叫及 返回段運算 一般引數中總有乙個代表遞迴層數。遞迴結束返回時要考慮是否修改了全域性變數,並將其改回,這個是為回溯做準備。記憶化搜尋 解決了遞迴時大量...