題目:
給你乙個矩陣,其邊長均為整數。你想把矩陣切割成總數最少的正方形,其邊長也為整數。切割工作由一台切割機器完成,它能沿平行於矩形任一邊的方向,從一邊開始一直切割到另一邊。對得到的矩形再分別進行切割。
輸入資料:
輸入檔案中包含兩個正整數,代表矩形的邊長,每邊長均在1—100之間。
輸出資料:
輸出檔案包含一行,顯示出你的程式得到的最理想的正方形數目。
輸入輸出示例:
cuts.in:
5 6cuts.out:
5這道題呢可以用dfs+記憶化搜尋,因為正在學習dp,所以就用dp寫了
所以就用乙個陣列f[i][j]表示邊長為i,j的矩形可以分出最少的正方形
所以就可知if(i==j) f[i][j]=1; 所以就可以知道狀態轉移方程為:f[i][j]=min
(這裡面f[i][k1]+f[i][j-k1]表示將矩形橫著切開以後分成的兩塊包含的最少的矩形,同理可得f[k2][j]+f[i-k2][j]是豎著切開後兩塊的最少矩形) 1<=k1
**如下:
#include#includeview code#include
#include
using
namespace
std;
int f[2100][2100
];int a[2100][2100
];int
main()
for(int i=1;i<=n;i++)
for(int k=1;k//
豎著切 }
}/*for(int i=1;i<=n;i++)
洛谷P1298 最接近的分數
給出乙個正小數,找出分子 非負 不超過m,分母不超過n 正數 的最簡分數或整數,使其最接近給出的小數。最接近 是指在數軸上該分數距離給出的小數最近,如果這個分數不惟一,輸出 too many 輸入格式 輸入檔案共有二行,第一行包含兩個用空格隔開的正整數m和n 1 m,n 107 表示要求的分數其分子...
P1357 花園 矩陣快速冪 DP
題意 乙個只含字母c和p的環形串 求長度為n且每m個連續字元不含有超過k個c的方案數 m 5 n 1e15 題解 用乙個m位二進位制表示狀態 轉移很好想 但是這個題是用矩陣快速冪加速dp的 因為每一位的轉移都是一樣的 用乙個矩陣表示狀態i能否轉移到狀態j 然後跑一遍 統計答案特別講究 因為是乙個環 ...
P1005 矩陣取數遊戲 區間dp
帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的 m n 的矩陣,矩陣中的每個元素 a 均為非負整數。遊戲規則如下 每次取數時須從每行各取走乙個元素,共n個。經過m次後取完矩陣內所有元素 每次取走的各個元素只能是該元素所在行的行首或行尾 每次取數都有乙個得分值,為每行取數的得分之和,每行取數的得分 ...