首页 / 算法 / 搜索算法--爬山法 (代码示例)
搜索算法--爬山法 (代码示例)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了搜索算法--爬山法 (代码示例),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3887字,纯文字阅读大概需要6分钟。
内容图文
![搜索算法--爬山法 (代码示例)](/upload/InfoBanner/zyjiaocheng/853/564448baf2cf4365a990e415c0b2446c.jpg)
以航班为例,从出发城市到目标城市区域内各段最远的航班
//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; }
}
}
}
内容总结
以上是互联网集市为您收集整理的搜索算法--爬山法 (代码示例)全部内容,希望文章能够帮你解决搜索算法--爬山法 (代码示例)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。