#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; }
前几天遇到一道有趣的题目 一座楼有10层,兔子可以跳跃的层数可以为1,2或者3,那么兔子到达10层有多少种跳法并列出各种情况。
原文地址:http://blog.csdn.net/j695251824/article/details/39006825