zoukankan      html  css  js  c++  java
  • 哈密顿路

     

    邮递员在送信时,为了节省路途,自己规定:每次总是从n 个村子中选择其中一个合适的村子出发,途中每个村子仅且经过一次,送完所有的信。已知各个村子的道路连通情况

    输出

    所有符合要求的路线。如果没有输出“no road”。

    【输入】 第一行:整数n:村子的个数。 接下来是一个n*n 的0、1 矩阵,表示n 个村子的连同情况,如:a[i,j]=1 ,表示第i 和第j 个村子之间有路可走,如果a[i,j]=0,表示他们之间无路可走。

    【输出】

    按序号从小到大输出所有可行的线路

    输入:

    7 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 输出: 2 3 7 6 5 1 4 3 7 6 5 2 1 4 4 1 2 3 7 6 5 4 1 2 5 6 7 3 4 1 5 2 3 7 6 4 1 5 6 7 3 2 5 6 7 3 2 1 4 6 7 3 2 5 1 4

    这个邮递员是不是脑子有泡,把哪个村庄经历两遍能死呀

    然后他竟然还要我找到每一条可行线路,一条路还不够你走的呀

    你知道你走的这么任性给我带来多大的困扰吗!

    接下来是答案

     1 int dfs(int a,int tot)
     2 {
     3     if(tot == n) 就输出这个顺序;
     4     vis[x] = 1;//让这个点被访问过 
     5     b[j++] = x;//记录这个点的坐标 
     6     for(int i = 1;i <= n;i++)
     7     {
     8         if(vis[i] == 0 && a[i][x] == 1)//如果这个点没有被访问过并且有路,那就继续从这个点开始新一轮搜索 
     9         {
    10             dfs(i,tot + 1);    
    11             j--;//如果搜索的过程中没有发现合适的点,那我们就回溯 
    12             vis[x] = 0; 
    13         }
    14     } 
    15 }

    这就是这个代码里的搜索部分,其他的我就不多写了昂,反正我也不太会

    好了就这样了我要去学化学了,化学使我快乐(强颜欢笑)
     
  • 相关阅读:
    MySQL update && select ,update的同时select,和for update 语句说再见。
    宋体文件C#读取CSV文件java教程
    输入格式邮箱验证格式
    状态集合[Python]Socket高级 select I/O复用模型(二)
    运行下载运行google play闪退的解决办法java教程
    Hibernate查询
    Hibernare 的基本介绍
    Hibernate详细配置
    人工智能能力提升指导总结
    如何根据普通ip地址获取当前地理位置
  • 原文地址:https://www.cnblogs.com/yupeiqi/p/9436911.html
Copyright © 2011-2022 走看看