From 48554c004808628bd6becb09f8e96d9dc8db2bfd Mon Sep 17 00:00:00 2001 From: pc5gxfnkh <242697573@qq.com> Date: Sun, 25 Jun 2023 23:52:39 +0800 Subject: [PATCH] Update README.md --- README.md | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/README.md b/README.md index 6c5be78..e9fc2f3 100644 --- a/README.md +++ b/README.md @@ -133,3 +133,93 @@ solve(s1,s2,s3); printf(“求解结果\n”): print£(”s1:“);dispset(s1); print£(”s2:");dispset(s2): printf(”s3:“);dispset(s3); + +【问题描述】 求解自行车慢速比赛问题 +一个美丽的小岛上有许多景点,景点之间有一条或者多条道路。现在进行自行车慢速比赛(最慢的选手获得冠军),工作人员在道路上标出自行车的单向行驶方向,所有比赛线路不会出现环,选手不能在中途的任何地方停下来,否则犯规,退出比赛。首先给定一行两个整数N和M,N为岛上的景点数(景点编号为0~N-1,N≤100),接下来的M行,每行为a、b、l,表示景点a和景点b之间的单向路径长度为L(L为整数)。最后一行为s和t,表示比赛的起点s和终点t。所有选手水平高超,都能够以自行车的最低速度行驶,并且所有自行车的最低速度相同。问冠军所走的路径长度是多少?假设只有一组测试数据。 +#include +#define INF 0x3f3f3f3f //定义∞ +#define MAXV 101 +int A[MAXV][MAXV]; //邻接矩阵 +int n,m; +int s,t; +int dist[MAXV]; +void BellmanFord(int v) //贝尔曼-福特算法 +{ int i,k,u; + for (i=0;idist[i]+A[i][u]) + dist[u]=dist[i]+A[i][u]; + } + } } } +} +int main() +{ int i,j; + int a,b,l; + scanf("%d%d",&n,&m); //输入n、m + for (i=0;i +#include +using namespace std; +typedef int ElemType; +typedef struct node +{ ElemType data; //数据元素 +truct node *lchild; //指向左孩子结点 + struct node *rchild; //指向右孩子结点 +} BTNode; //二叉链结点类型 +BTNode *CreateBTree(ElemType a[],ElemType b[],int n) //对应例2.8的算法由先序序列a[0..n-1]和中序序列b[0..n-1]建立二叉链 +{ + int k; + if (n<=0) return NULL; + ElemType root=a[0]; //根结点值 + BTNode *bt=(BTNode *)malloc(sizeof(BTNode)); + bt->data=root; + for (k=0;klchild=CreateBTree(a+1,b,k); //递归创建左子树 + bt->rchild=CreateBTree(a+k+1,b+k+1,n-k-1); //递归创建右子树 + return bt; +} +void DispBTree(BTNode *bt) //采用括号表示输出二叉链bt +{ + if (bt!=NULL) + { printf("%d",bt->data); + if (bt->lchild!=NULL || bt->rchild!=NULL) + { printf("("); //有孩子结点时才输出( + DispBTree(bt->lchild); //递归处理左子树 + if (bt->rchild!=NULL) printf(","); //有右孩子结点时才输出, + DispBTree(bt->rchild); //递归处理右子树 + printf(")"); //有孩子结点时才输出) + } + } +} +void DestroyBTree(BTNode *&bt) //对应例2.9的算法 +//释放以bt为根结点的二叉树 +{ if (bt!=NULL) + { DestroyBTree(bt->lchild); + DestroyBTree(bt->rchild); + free(bt); + } +} \ No newline at end of file