P1212 [USACO1.4] 铺放矩形块 Packing Rectangles
luogu上的那博客是我
题目描述
给定4个矩形块,找出一个最小的封闭矩形将这4个矩形块放入,但不得相互重叠。所谓最小矩形指该矩面积最小。 4 个矩形块6种方案,这6种方案是唯一可能的基本铺放方案。
读题后我们可以知道这可以用DFS生成一个排列 如下:
void dfs(int ceng)/生成/排列 {
if(ceng == 4) {
check();
return ;
}
for (int i = 1; i < 5; i ++ ) {
if(!vis[i]) {
tmpx[ceng + 1] = x[i];
tmpy[ceng + 1] = y[i];
vis[i] = true;
dfs(ceng + 1);
tmpx[ceng + 1] = y[i];//这里不是tmpx存x了!下一次做的时候 x,y需要反过来
tmpy[ceng + 1] = x[i];//这里不是tmpy存y了!下一次做的时候 x,y需要反过来
dfs(ceng + 1);
vis[i] = false;
tmpx[ceng + 1] = 0;