亚洲喷奶水中文字幕电影,日本aⅴ高清一区二区三区,欧美亚洲日本国产,欧美日韩亚洲中文字幕

<legend id="flx4p"><abbr id="flx4p"><thead id="flx4p"></thead></abbr></legend>

<mark id="flx4p"><thead id="flx4p"></thead></mark>

      我要投稿 投訴建議

      一道面試題引發(fā)的程序設(shè)計的想法

      時間:2022-10-20 10:14:11 面試試題 我要投稿
      • 相關(guān)推薦

      一道面試題引發(fā)的關(guān)于程序設(shè)計的想法

        申明:這是在看到園子里兩個帖子關(guān)于兩道面試編程題之后個人的一點想法

      一道面試題引發(fā)的關(guān)于程序設(shè)計的想法

        面試題一:

        大廳里有100盞燈,每盞燈都編了號碼,分別為1-100。每盞燈由一個開關(guān)來控制。(開關(guān)按一下,燈亮,再按一下燈滅。開關(guān)的編號與被控制的燈相同。)開始時,燈是全滅的,F(xiàn)在按照以下規(guī)則按動開關(guān)。

        第一次,將所有的燈點亮。

        第二次,將所有2的倍數(shù)的開關(guān)按一下。

        第三次,將所有3的倍數(shù)的開關(guān)按一下。

        以此類推。第N次,將所有N的倍數(shù)的開關(guān)按一下。

        問第100次按完以后,大廳里還有幾盞燈是亮的。

        看到這道題后我馬上想怎樣編程去實現(xiàn)這個問題

        這道題不復(fù)雜很快我就想到一個實現(xiàn)的辦法,首先我寫了一個winform程序,界面用來展示各個燈最后的狀態(tài)

        第一版的代碼如下

        private void Form1_Load(object sender, EventArgs e)

        {

        //燈的集合 Dictionary<燈的序號,燈的狀態(tài)(0:滅,1:亮)>

        Dictionary dicLight = new Dictionary();

        //添加100盞燈

        for (int i = 1; i <= 100; i++)

        dicLight.Add(i, 0);

        //100次對燈的操作

        for (int i = 1; i <= 100; i++)

        {

        if (i == 0)

        //把全部燈點亮

        for (int j = 1; j <= 100; j++)

        dicLight[j] = 1;

        else

        for (int k = 1; k <= 100; k++)

        if (k % i == 0)

        dicLight[k] = dicLight[k] == 1 ? 0 : 1;

        }

        //循環(huán)所有燈并在界面上展示

        foreach (KeyValuePair param in dicLight)

        txtLightStates.Text += "第" + param.Key + "盞燈狀態(tài)為:" + (param.Value == 0 ?"滅" : "亮")+"\r\n";

        }

        以下是運行結(jié)果

        所以這就完了? 當(dāng)然不是,然后我想到如果燈的數(shù)量跟要操作的次數(shù)是可變的呢,然后我開始重構(gòu)這個方法,把可變的參數(shù)提取出來作為方法參數(shù)

        修改后的代碼如下

        private void Form1_Load(object sender, EventArgs e)

        {

        }

        public Dictionary ChangeLightState(int lightNum, int changeLightNum)

        {

        //燈的集合 Dictionary<燈的序號,燈的狀態(tài)(0:滅,1:亮)>

        Dictionary dicLight = new Dictionary();

        //添加N盞燈

        for (int i = 1; i <= lightNum; i++)

        dicLight.Add(i, 0);

        //N次燈的操作

        for (int i = 1; i <= changeLightNum; i++)

        {

        if (i == 1)

        //把全部燈點亮

        for (int j = 1; j <= lightNum; j++)

        dicLight[j] = 1;

        else

        for (int k = 1; k <= lightNum; k++)

        if (k % i == 0)

        dicLight[k] = dicLight[k] == 1 ? 0 : 1;

        }

        return dicLight;

        }

        private void btnStartCal_Click(object sender, EventArgs e)

        {

        int lightNum=0,changeLightNum=0;

        int.TryParse(txtLightNum.Text,out lightNum);

        int.TryParse(txtChangeLightNum.Text,out changeLightNum);

        Dictionary dicLight = ChangeLightState(lightNum, changeLightNum);

        //循環(huán)所有燈并在界面上展示

        foreach (KeyValuePair param in dicLight)

        txtLightStates.Text += "第" + param.Key + "盞燈狀態(tài)為:" + (param.Value == 0 ? "滅" : "亮") + "\r\n";

        }

        下面是運行界面跟結(jié)果

        看過《大話設(shè)計模式》的同學(xué)都知道到這里肯定沒完,比果我要實現(xiàn)2的倍數(shù)亮,3的倍數(shù)不亮怎么辦呢?

        下面的留給各位自己想象去吧

      【一道面試題引發(fā)的程序設(shè)計的想法】相關(guān)文章:

      一道淘汰85%面試者的百度開發(fā)者面試題08-03

      擁抱引發(fā)的職場危機08-02

      程序設(shè)計心得04-26

      這是一道阿里巴巴的面試題,難倒了95%的面試者,你ok嗎?07-31

      引發(fā)共鳴的演講法則02-11

      補強型收購引發(fā)的麻煩07-19

      硅谷面試題精選02-03

      電信面試題07-20

      Java經(jīng)典面試題12-29

      Cisco的面試題09-25