戈德夫
蜂窝问题蜜蜂只能向右走,所以只能走数字比本身大1和大2的蜂巢,所以可以建立二叉树,最后求叶子节点个数#include
#include
#include
typedef struct Node
{
int value;
Node *left;
Node *right;
}*tNode;
void CreateBiTree(tNode *T,int i,int n)
{
int q=i;
if(q>n)
{
*T=NULL;
return;
}
else
{
*T=(tNode)malloc(sizeof(Node));
(*T)->value=q;
CreateBiTree(&(*T)->left,q+1,n);
CreateBiTree(&(*T)->right,q+2,n);
}
}
int CountLeaf(tNode *bt,int count)
{
if((*bt)!=NULL)
{
if((*bt)->left==NULL&&(*bt)->right==NULL) count++;
count=CountLeaf(&(*bt)->left,count);
count=CountLeaf(&(*bt)->right,count);
}
return count;
}
int main(){
tNode root;
int n,m,k=0;
scanf("%d%d",&n,&m);
CreateBiTree(&root,n,m);
k=CountLeaf(&root,k);
printf("%d",k);
return 0;
}