搜索算法--爬山法 (代码示例)
以航班为例,从出发城市到目标城市区域内各段最远的航班
//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; }
}
}
}
搜索算法--爬山法 (代码示例)相关推荐
- boost::graph模块实现广度优先搜索算法的使用示例
boost::graph模块实现广度优先搜索算法的使用示例 实现功能 C++实现代码 实现功能 boost::graph模块实现广度优先搜索算法的使用示例 C++实现代码 #include <b ...
- 用户自定义协议client/server代码示例
用户自定义协议client/server代码示例 代码参考链接:https://github.com/sogou/workflow message.h message.cc server.cc cli ...
- 2021年大数据Flink(二十六):State代码示例
目录 State代码示例 Keyed State 官网代码示例 需求: 编码步骤 代码示例 Operator State 官网代码示例 需求: 编码步骤: 代码示例 State代码示例 Keyed S ...
- TensorFlow常用操作:代码示例
1,定义矩阵代码示例: import tensorflow as tftf.zeros([3,4]) #定义3行4列元素均为0的矩阵tensor=tf.constant([1,2,3,4])#定义一维 ...
- TensorFlow基本计算单元:代码示例
1,代码示例: import tensorflow as tf a = 3 #创建变量 w = tf.Variable([[0.6,1.2]])#创建行向量 x = tf.Variable([[2.1 ...
- php mms,PHP代码示例_PHP账号余额查询接口 | 微米-中国领先的短信彩信接口平台服务商...
PHP余额查询接口代码示例 请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://api.weimi.cc/2/accoun ...
- java结束全部操作代码_Java创建与结束线程代码示例
这篇文章主要介绍了Java创建与结束线程代码示例,小编觉得挺不错的,这里分享给大家,供需要的朋友参考. 本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者.一些高级知识如线程 ...
- doc python 颜色_Python wordcloud.ImageColorGenerator方法代码示例
本文整理汇总了Python中wordcloud.ImageColorGenerator方法的典型用法代码示例.如果您正苦于以下问题:Python wordcloud.ImageColorGenerat ...
- 机器学习简单代码示例
机器学习简单代码示例 //在gcc-4.7.2下编译通过. //命令行:g++ -Wall -ansi -O2 test.cpp -o test #include <iostream> u ...
- 手机如何看python代码_python如何绘制iPhone手机图案?(代码示例)
本篇文章给大家带来的内容是介绍python如何绘制iPhone手机图案?(代码示例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 虽然我用不起苹果手机,但我可以用python画出 ...
最新文章
- 黑马程序员-4 String类和StringBuffer类
- UA MATH636 信息论8 线性纠错码
- 《R语言实战》第2章
- WP7上Metro风格的程序栏图标汇总
- Netflix提出梯度提升决策树网络Hammock!
- 1.7-27编程基础之字符串 单词翻转
- 前目的地罗伯森是谁_距离目的地只剩10公里,开车师傅却在高速公路上睡着了...
- 拼图项目的诅咒:为什么Java 9一遍又一遍地延迟?
- go var 一个整数_Go语言学习基础-值、变量、常量
- IGDB|2021年大学生夏令营开始报名啦!
- 容器编排技术 -- Kubernetes kubectl create secret docker-registry 命令详解
- 添加控制器 提示找到不到上下文_JS局部上下文和全局上下文
- Intel开发工具之VTune
- C语言中如何使用system函数
- DSA数字签名含C语言实例
- centos7 python3 爬虫登陆邮箱_使用爬虫爬取超星学习通的作业时间并且通过邮件提醒!...
- 黑马程序员:一些简单的设计模式
- wampserver下载以及安装教程
- 3dMAX+Vary 调节焦散效果爬坑
- Pool:对象池源码解读