C#深度优先搜索算法

发布时间:2020-10-09 11:19:39 作者:Traveller_Lee
来源:脚本之家 阅读:130

本文实例为大家分享了C#深度优先搜索算法的具体代码,供大家参考,具体内容如下

//论文要用到其改进算法,在此先demo测试一下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DFS
{
  class Program
  {
    public int[,] map = new int[100, 100];
    public int[] road = new int[120];
    public int n, x, y;
    public int m = 1;
    public int[] visited = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
    static void Main(string[] args)
    {
      Program pro = new DFS.Program();
      int i, j;
      pro.n = int.Parse(Console.ReadLine());
      pro.x= int.Parse(Console.ReadLine());
      pro.y= int.Parse(Console.ReadLine());
    
      for (i = 0; i < pro.n; i++)
      {
        for (j = 0; j < pro.n; j++)
        {
          pro.map[i,j]= int.Parse(Console.ReadLine());
        }
      }
      pro.road[0] = pro.x;
      pro.dfs(pro.x);
    }
    public void dfs(int p)
    {
      visited[p] = 1;
      int i, j;
      for (i = 0; i < n; i++)
      {
        if (map[p,i] == 1 && visited[i] == 0)
        {
          if (i == y)///如果深搜到了终点,就输出刚才经过的路径 
          {
            for (j = 0; j < m; j++)
            {
              Console.WriteLine("{0}", road[j]);
            }
            Console.WriteLine("{0}\r\n", y);
          }
          else///如果该点不是终点 
          {
            map[p,i] = 0;
            road[m] = i;///将该点存起来 
            m++;
            dfs(i);///接着深搜 
            map[p,i] = 1;
            visited[i] = 0;
            m--;
          }
        }
      }
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。

推荐阅读:
  1. 深度优先搜索1.0
  2. c#如何实现树的深度优先遍历

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

搜索算法

上一篇:C语言实现单链表(LinkedList)

下一篇:微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》