您的位置:首页 > 其它

前几天遇到一道有趣的题目 一座楼有10层,兔子可以跳跃的层数可以为1,2或者3,那么兔子到达10层有多少种跳法并列出各种情况。

2014-09-02 15:22 513 查看
#include <iostream>
using namespace std;
#define MaxSize 20
struct enode
{
int key;
enode* next;
};
struct vnode
{
int key;
enode* first;
};
struct AGraph
{
vnode adjlist[20];
int n,e;
};
int visited[11]={0};
int count=0;
void Ppath(AGraph* p,int u,int v,int d,int path[])
{
int i,j;
visited[u]=1;
d++;
path[d]=u;
if(u==v)
{
for(i=0;i<=d;i++)
cout<<path[i]<<" ";
count++;
cout<<endl;
}
enode*q=p->adjlist[u].first;
while(q!=NULL)
{
if(visited[q->key]==0)
Ppath(p,q->key,v,d,path);
q=q->next;
}
visited[u]=0;
}
int main()
{
int i,j,path[20];
vnode* p;
enode* q,*q1;
AGraph* r=(AGraph*)malloc(sizeof(AGraph));
r->e=27;r->n=11;
for(i=0;i<=10;i++)
{
r->adjlist[i].key=i;
r->adjlist[i].first=NULL;
j=i+1;
while(j<=10 &&j<(i+4))
{
enode* q=(enode*)malloc(sizeof(enode));
q->key=j;
q->next=r->adjlist[i].first;
r->adjlist[i].first=q;
j++;
}
}
Ppath(r,0,10,-1,path);
cout<<"数目为"<<count<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐