偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C#.Net面試官問(wèn):漢諾塔算法

開(kāi)發(fā) 前端
如果大于1個(gè)碟片,假設(shè)為n。則遵循先把n-1個(gè)碟片從小到大的順序從柱子1借助柱子3挪到柱子2,然后把剩余的最后一個(gè)碟片從柱子1挪到柱子3,最后把柱子2的n-1個(gè)碟片從小到大的順序借助柱子1挪到柱子3,完成整個(gè)過(guò)程。

前言

現(xiàn)在不僅各大編程語(yǔ)言卷,也順帶感染了C#的內(nèi)卷。有人面試被問(wèn)到,漢諾塔算法.這個(gè)算法比較有意思。網(wǎng)上C語(yǔ)言較多,本篇來(lái)看下C#。

概括

漢諾塔,據(jù)說(shuō)一個(gè)古印度的黃金碟片的游戲。把一根柱子上疊好的一堆碟片從小到大的順序,借助第二根柱子挪到第三根柱子上。

注意這里有幾個(gè)點(diǎn)
其一:碟片的數(shù)量
其二:三根柱子
其三:從小到大借助挪動(dòng)
其四:小碟片必須在大碟片之上,任何一個(gè)。

應(yīng)該如何做呢?碟片的數(shù)量未知,這里假設(shè)為n(int)。三根柱子(字符類(lèi)型),第一根柱子one,第二根柱子two,第三根柱子three。作為參數(shù),可以構(gòu)建如下函數(shù),函數(shù)名為:Hannuo:

static void Hannuo(int n, char one, char two, char three)
{
}

柱子之間碟片的挪動(dòng),另取一個(gè)函數(shù),用以記錄:

static void move(char x, char y)
{
    Console.Write(x + "->" + y + "\r\n");
}

假設(shè)只有一個(gè)碟片,直接從柱子1挪到柱子3即可,所以函數(shù)里面需要判斷下:

static void Hannuo(int n, char one, char two, char three)
{
    if (n == 1) move(one, three);
}

如果大于1個(gè)碟片,假設(shè)為n。則遵循先把n-1個(gè)碟片從小到大的順序從柱子1借助柱子3挪到柱子2,然后把剩余的最后一個(gè)碟片從柱子1挪到柱子3,最后把柱子2的n-1個(gè)碟片從小到大的順序借助柱子1挪到柱子3,完成整個(gè)過(guò)程。完成代碼如下:

static void Hannuo(int n, char one, char two, char three)
{
     if (n == 1) move(one, three);
     else
     {
        Hannuo(n - 1, one, three, two);
        move(one, three);
        Hannuo(n - 1, two, one, three);
     }
}

整個(gè)的代碼:

static void Hannuo(int n, char one, char two, char three)
{
    if (n == 1) move(one, three);
    else
    {
         Hannuo(n - 1, one, three, two);
         move(one, three);
         Hannuo(n - 1, two, one, three);
    }
}
static void move(char x, char y)
{
    Console.Write(x + "->" + y + "\r\n");
}
static void Main(string[] args)
{
    Hannuo(3, 'A', 'B', 'C');
    Console.ReadLine();
}

這里的Main函數(shù),里面?zhèn)鬟f了3個(gè)碟片,然后分別以字符串A,B,C代表三根柱子,進(jìn)行碟片移動(dòng)最終的結(jié)果是如下:

圖片圖片

三個(gè)碟片在三根柱子,A,B,C上進(jìn)行了7次挪動(dòng)。其它以此類(lèi)推。這里面主要是遞歸算法。

責(zé)任編輯:武曉燕 來(lái)源: 江湖評(píng)談
相關(guān)推薦

2022-04-18 10:01:07

Go 語(yǔ)言漢諾塔游戲

2021-12-02 18:20:25

算法垃圾回收

2021-11-08 09:18:01

CAS面試場(chǎng)景

2021-12-25 22:31:10

MarkWord面試synchronize

2024-07-26 08:47:07

2021-12-16 18:38:13

面試Synchronize

2010-08-23 15:06:52

發(fā)問(wèn)

2021-01-06 05:36:25

拉鏈表數(shù)倉(cāng)數(shù)據(jù)

2021-05-11 21:56:11

算法清除JVM

2022-01-05 09:55:26

asynawait前端

2023-02-20 08:08:48

限流算法計(jì)數(shù)器算法令牌桶算法

2024-08-19 09:13:02

2020-07-28 00:58:20

IP地址子網(wǎng)TCP

2024-06-04 07:38:10

2025-06-03 07:05:00

Linux操作系統(tǒng)Windows

2009-08-28 09:29:02

2009-08-25 13:53:20

C#.NET rege

2009-08-26 14:23:14

C#.Net Fram

2021-03-24 10:25:24

優(yōu)化VUE性能

2018-01-19 10:43:06

Java面試官volatile關(guān)鍵字
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)