Sticks POJ 1011 搜索题

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

需要剪枝

#include
#include
#include
#include
using namespace std;
int len,n,sum,s[65],mark[65],num;
int dfs(int i,int req,int left);
int com(int a,int b);
int main(){
	scanf("%d",&n);
	while(n){
		int sum=0;
		memset(mark,0,sizeof(mark));
		for(int i=0;ib;
}

int dfs(int i,int req,int left){//i,当前使用的木棍,req当前所需要的长度,left剩下的长度 
 //   cout<0&&(s[j]==s[j-1])&&(!mark[j-1])) continue;//剪枝2,若前面相同长度没有使用,则后面相同长度的木棍也不符合要求 
			if(mark[j]) continue;//使用未使用过的 
			if(s[j]>req)continue;//剪枝3,若当前木棍大于需要的,也不符合要求 
			mark[j]=1;
			req-=s[j];
//			cout<


你可能感兴趣的:(POJ)