admin 管理员组文章数量: 1086019
搜索算法
以航班为例,从出发城市到目标城市区域内各段最远的航班
//1.程序入口
static void Main(string[] args)
{
Test.SampleOne sample = new Test.SampleOne();
sample.Start(1, "北京", "深圳");
}
//2.实现方法
using System;
using System.Collections.Generic;
namespace Test
{
public class SampleOne
{
/// <summary>
/// 航班
/// </summary>
private List<FlightInfo> flights = null;
/// <summary>
/// 航班数量
/// </summary>
private int numFlights = 0;
private void InitData()
{
if (flights == null)
{
flights = new List<FlightInfo>();
flights.Add(new FlightInfo("北京", "沈阳", 684));
flights.Add(new FlightInfo("北京", "杭州", 1273));
flights.Add(new FlightInfo("杭州", "武汉", 751));
flights.Add(new FlightInfo("北京", "武汉", 1161));
flights.Add(new FlightInfo("武汉", "深圳", 1069));
flights.Add(new FlightInfo("沈阳", "深圳", 2792));
numFlights = flights.Count;
}
}
/// <summary>
/// 寻找出发城市到目的地城市最远距离的航班
/// </summary>
/// <param name="i">寻找次数</param>
/// <param name="from">出发城市</param>
/// <param name="to">目的地城市</param>
public void Start(int i, string from, string to)
{
//初始化数据
InitData();
FlightInfo f = Find(from);
if (f == null)
{
Console.WriteLine("无此航班");
Console.ReadKey();
}
Console.WriteLine("节点:{0},出发地:{1},目的地:{2},距离:{3}", i, f.From, f.To, f.Distance);
if (f.To.Equals(to))
{
Console.WriteLine("已到达目的地。");
return;
}
Start(++i, f.To, to);
Console.ReadKey();
}
//找出离出发城市最远的航班
private FlightInfo Find(string from)
{
int pos = -1;
int dist = 0;
for (int i = 0; i < numFlights; i++)
{
if (flights[i].From.Equals(from) && !flights[i].Skip)
{
if (flights[i].Distance > dist)
{
pos = i;
dist = flights[i].Distance;
}
}
}
if (pos != -1)
{
flights[pos].Skip = true;
return new FlightInfo(flights[pos].From, flights[pos].To, flights[pos].Distance);
}
return null;
}
}
/// <summary>
/// 航班信息
/// </summary>
public class FlightInfo
{
private string from;
private string to;
private int distance;
private bool skip;
public FlightInfo(string strFrom, string strTo, int intDistance)
{
from = strFrom;
to = strTo;
distance = intDistance;
skip = false;
}
/// <summary>
/// 出发地
/// </summary>
public string From
{
get { return from; }
set { from = value; }
}
/// <summary>
/// 目的地
/// </summary>
public string To
{
get { return to; }
set { to = value; }
}
/// <summary>
/// 距离
/// </summary>
public int Distance
{
get { return distance; }
set { distance = value; }
}
/// <summary>
/// 是否跳跃忽略
/// </summary>
public bool Skip
{
get { return skip; }
set { skip = value; }
}
}
}
本文标签: 搜索算法
版权声明:本文标题:搜索算法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1686594013a14688.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论