–把一个大蛋糕(边长为E),能否切成给定s(s<=16)个边长为Ei(1=<Ei<=10)的小蛋糕,所有的蛋糕都是正方形.
•从左上开始切,寻找某列已切行数最少的开始,然后从大到小逐个试蛋糕,看是否能切出来,若当前切割失败,则回溯上一步,换个不同大小的继续试。切完需要的块数就表示刚好可以。
贴一个看了大牛的代码以示敬意,当初确实没想到如此搜索的策略
#include <stdio.h>
#include <string.h>
int cakeside,piecenum,pieces[11];
//fillednum stand for the nums had filled
bool fill(int fillednum,int* used)
{
//如果已填的个数等于需求的蛋糕个数则表示刚好
if