1020 Anniversary Cake DFS
来源:互联网 发布:推荐淘宝上的韩国泡菜 编辑:程序博客网 时间:2024/05/16 03:52
本题的难点不在于怎样去DFS,而是每放入一个蛋糕后,怎样去标记盒子已经放有蛋糕的位置?
#include <stdio.h>#include <string.h>int boxsize,n,sizenum[11],col[41]; //col[i]记录第i列被填充了的格子数bool DFS(int fillnum){ if (fillnum==n) return true; int min=2147483647,prow; //寻找格子数被填充最少的列,靠左优先 for (int i=1; i<=boxsize; i++) if (min>col[i]) { min=col[i]; prow=i; } for (int size=10; size!=0; size--) { if (!sizenum[size]) continue; if (boxsize-col[prow]>=size && boxsize-prow+1>=size) //检查尺寸为size的蛋糕放入盒子时在纵向和横向是否越界 { int wide=0; /*检查盒子从第prow列到第prow+size-1列,共size列的宽度wide中 是否每列剩余的空间都足够放入高度为size的蛋糕 */ for (int r=prow; r<=prow+size-1; r++) if (col[r]<=col[prow]) wide++; else break; if (wide>=size) { int r; sizenum[size]--; for (r=prow; r<=prow+size-1; r++) col[r]+=size; if (DFS(fillnum+1)) return true; sizenum[size]++; for (r=prow; r<=prow+size-1; r++) col[r]-=size; } } } return false;}int main(){ int t; scanf("%d",&t); while (t--) { memset(sizenum,0,sizeof(sizenum)); memset(col,0,sizeof(col)); scanf("%d%d",&boxsize,&n); int cnt=0,area=0; for (int i=1; i<=n; i++) { int size; scanf("%d",&size); area+=size*size; sizenum[size]++; if (size>boxsize/2) cnt++; } if (cnt>1 || area!=boxsize*boxsize) { printf("HUTUTU!\n"); continue; } if (DFS(0)) printf("KHOOOOB!\n"); else printf("HUTUTU!\n"); } return 0;}
- 1020 Anniversary Cake DFS
- poj 1020 Anniversary Cake DFS
- POJ 1020 Anniversary Cake dfs
- poj 1020 Anniversary Cake (DFS)
- 【dfs】poj 1020 Anniversary Cake
- POJ 1020 Anniversary Cake 回溯DFS
- poj 1021 Anniversary Cake【dfs】
- poj 1020 Anniversary Cake dfs的灵活结构
- POJ 1020 Anniversary Cake(dfs+分割思想)【转】
- (poj 1020 Anniversary Cake)<DFS的巧妙剪枝>
- pku 1020 Anniversary Cake
- POJ 1020 Anniversary Cake
- poj 1020 Anniversary Cake
- 1020 - Anniversary Cake
- POJ 1020 Anniversary Cake
- poj - 1020 - Anniversary Cake
- POJ - 1020 Anniversary Cake
- POJ 1020 Anniversary Cake
- 25-闪烁(适合火狐浏览器)
- 1019 Number Sequence 数论
- Curl模仿http浏览器常见命令
- Assignment 3: Data Structures
- 2013 多校第二场 hdu 4618 Palindrome Sub-Array
- 1020 Anniversary Cake DFS
- atheros设置beacon和probe response中的IE信息
- 系统集成项目管理之项目整体管理
- Spring3.0任务调度
- jsp转发和重定向的区别
- 归档与非归档模式下更改数据文件位置
- struts文件上传
- 1035 Spell checker 暴力模拟
- java代码获取系统时间和执行定时任务