예제 #1
0
int main()
{
	int value_nu,value[MAX],num;
	int guocheng[MAX];
	scanf("%d%d",&value_nu,&num);
	int opt[value_nu][num+1];
	int i,j,k;
	for(i=0;i<value_nu;i++)
		for(j=1;j<num+1;j++)
			opt[i][j]=0;
	for(i=0;i<value_nu;i++)
		opt[i][0]=1;
	for(i=0;i<value_nu;i++)
		scanf("%d",value+i);
	for(i=0,j=num;j>=1;j--)
		for(k=1;value[i]*k<=j;k++)
			opt[i][j]+=opt[i][j-value[i]*k];
		
	for(i=1;i<value_nu;i++)
		for(j=num;j>=1;j--)
		{	opt[i][j]+=opt[i-1][j];
			for(k=1;value[i]*k<=j;k++)
				opt[i][j]+=opt[i-1][j-value[i]*k];
		}
	printf("%d\n",opt[value_nu-1][num]);
	bianli(value_nu-1,num,guocheng,value,value_nu);
}
	int main ()
	{
		tree *t;
		t=inittree();
		bianli(t);
		return 0;
	}
예제 #3
0
int bianli(int ceng,int num_last,int* guocheng,int *value,int value_nu)
{
	int k;
	if(ceng<0)return 0;
	for(k=0;k*value[ceng]<=num_last;k++){
		guocheng[ceng]=k;
		if(k*value[ceng]==num_last)
			print(ceng,value,guocheng,value_nu);
		else
			bianli(ceng-1,num_last-k*value[ceng],guocheng,value,value_nu);
	}
	return 0;
}
예제 #4
0
int main(int argc, const char *argv[])
{
    struct stu *op,*head;
    head = (struct stu *)malloc(sizeof(struct stu));
    head->id = 1;
    head->chinese = 97;
    strcpy(head->name,"zhang");
    op=creat(head,2,60,"shazi");
    op=creat(op,3,60,"bendan");
    op=creat(op,4,70,"danben");
    op=creat(op,5,80,"haha");
    op=creat(op,6,90,"haha1");
    op=creat(op,7,100,"huakai");
    //head = fr(head,1); 
    //insert_next(head,3,8,59,"ladeng");
    head = insert_b(head,20,9,58,"ladeng");
    bianli(head);
    return 0;
}