C/C++知识点之UVA 208 划水记录2
小标 2019-03-01 来源 : 阅读 1280 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之UVA 208 划水记录2,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之UVA 208 划水记录2,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之UVA 208 划水记录2

题目:题目描述
中心城市消防部门与运输部门合作,维护反映城市街道现状的城市地图。消防员需要能够选择从火警站到火警的路线。  
中心城市分为不重叠的消防区。当报告发生火灾时,中央调度员通知火灾发生地区最近的火警站,并列出可能路线。您必须编写一个程序,中央调度员可以使用该程序来生成从地区火警站到火灾的路线。


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


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


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


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


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


样例输入
6  
1 2  
1 3  
3 4  
3 5  
4 6  
5 6  
2 3  
2 4  
0 0  
4  
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 了 自己改下就行了

  

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 1
看完这篇文章有何感觉?已经有3人表态,67%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程