POJ 1020 Anniversary Cake dfs

http://poj.org/problem?id=1020

题意:给定一块size*size 的生日蛋糕,并给出一些人的需要的蛋糕大小,问是否能将蛋糕完全切分给所有人而没有一点浪费。

思路:dfs搜索,思路很好。蛋糕的摆放顺序从上至下,每次都寻找所有列中摆放蛋糕最少的一列摆放蛋糕,这样搜索就可以过了。

代码:

#include
#include
int T ,size ,piece ;
int cake[15] ,len[200];

bool dfs(int pos){
	if( pos == piece )	return true ;
	
	int _min = 200000, min_n ;
	for(int i=0;i len[i]){
			_min = len[i] ;
			min_n = i ;
		}
	}	
	for(int i=1;i<=10;i++){			// size of the cake  
		if(cake[i]==0 || min_n+i>size || len[min_n]+i>size)	continue ;
		bool ok = 1 ;
		for(int j=min_n ; j len[min_n]){
				ok = 0 ; 	break ;
			}	
		}	
		if(!ok)	continue ;
		cake[i] -- ;
		for(int j=min_n ;j


你可能感兴趣的:(ACM-搜索)