继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

UVA 208 划水记录2

holdtom
关注TA
已关注
手记 1885
粉丝 240
获赞 992


题目:题目描述

中心城市消防部门与运输部门合作,维护反映城市街道现状的城市地图。消防员需要能够选择从火警站到火警的路线。 

中心城市分为不重叠的消防区。当报告发生火灾时,中央调度员通知火灾发生地区最近的火警站,并列出可能路线。您必须编写一个程序,中央调度员可以使用该程序来生成从地区火警站到火灾的路线。

输入

消防区都用小于 21 的正整数来标识,而且火场始终位于第一个消防区。输入文件包含多个测试用例,代表不同火灾。

• 测试用例的第一行由一个整数组成,该整数是距离火灾最近的火警站。

• 接下来的几行由成对的正整数组成,这些成对的正整数是开放街道相邻的消防区。(例如,如果对 4 7 在一行上,则消防区 4 和消防区 7 之间的街道是开放的。没有其他消防区在 4 和 7 之间。)

• 每个测试用例的最后一行由一对 0 组成。

输出

对于每个测试用例,您的输出必须通过编号来标识用例("CASE 1:","CASE 2:"等)。它必须列出每条路线,并按照字典序从小到大输出。它必须提供从火警站到火灾地点的总路线。 

不同用例的输出必须分开显示。

样例输入

1 2 

1 3 

3 4 

3 5 

4 6 

5 6 

2 3 

2 4 

0 0 

2 3 

3 4 

5 1 

1 6 

7 8 

8 9 

2 5 

5 7 

3 1 

1 8 

4 6 

6 9 

0 0

样例输出

CASE 1: 

1 2 3 4 6 

1 2 3 5 6 

1 2 4 3 5 6 

1 2 4 6 

1 3 2 4 6 

1 3 4 6 

1 3 5 6 

There are 7 routes from the firestation to streetcorner 6. 

CASE 2: 

1 3 2 5 7 8 9 6 4 

1 3 4 

1 5 2 3 4 

1 5 7 8 9 6 4 

1 6 4 

1 6 9 8 7 5 2 3 4 

1 8 7 5 2 3 4 

1 8 9 6 4 

There are 8 routes from the firestation to streetcorner 4.

之前写过一种算法 也是dfs,既然开博客记录重新写一个也无所谓。

#include <stdio.h>

int *SZZZ[100];

int  MGSL[100] = { 0 };

int YGDS[100] = { 0 };

int JLBS[6] = { 0 };

void dfs(int KSD,int CCDWZ)

{

    int MGDSL = 0;

    int XHBL = 0;

    MGDSL = MGSL[KSD];

    if (6 == KSD)

    {

        for (XHBL = 0; XHBL < CCDWZ; XHBL++)

            printf("%d ", JLBS[XHBL]);

        printf("6\n");

        return;

    }

    for (XHBL; XHBL < MGDSL; XHBL++)

    {

        if (0==YGDS[KSD])

        {

            YGDS[KSD] = 1;

            JLBS[CCDWZ] = KSD;

            dfs(SZZZ[KSD][XHBL],CCDWZ+1);

            YGDS[KSD] = 0;

        }

    }

}

int main()

{

    int DYG = 0;

    int DEG = 0;

    int J××× = 0;

    int XHBL = 0;

    //初始化指针

    for (XHBL = 0; XHBL < 100; XHBL++)

    {

        SZZZ[XHBL] = malloc(sizeof(int) * 100);

    }

    scanf_s("%d", &J×××);

    for (XHBL = 0; XHBL < J×××; XHBL++)

    {

        scanf_s("%d", &DYG);

        scanf_s("%d", &DEG);

        SZZZ[DYG][MGSL[DYG]++] = DEG;

        SZZZ[DEG][MGSL[DEG]++] = DYG;

    }

    dfs(1, 0);

    return 0;

}

我代码默认写进到终点是6 了 自己改下就行了

UVA 208 划水记录2

©著作权归作者所有:来自51CTO博客作者hzChan的原创作品,如需转载,请注明出处,否则将追究法律责任

UVACC++


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP