成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

面試題一:

大廳里有100盞燈,每盞燈都編了號碼,分別為1-100。每盞燈由一個開關(guān)來控制。(開關(guān)按一下,燈亮,再按一下燈滅。開關(guān)的編號與被控制的燈相同。)開始時,燈是全滅的。現(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)

***版的代碼如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

private void Form1_Load(object sender, EventArgs e)

{

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

    Dictionary<int, int> dicLight = new Dictionary<int,int>();

 

    //添加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<int, int> param in dicLight)

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

}

以下是運行結(jié)果

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

修改后的代碼如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

private void Form1_Load(object sender, EventArgs e)

   {

   }

 

   public Dictionary<int, int> ChangeLightState(int lightNum, int changeLightNum)

   {

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

       Dictionary<int, int> dicLight = new Dictionary<int, int>();

 

       //添加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<int, int> dicLight = ChangeLightState(lightNum, changeLightNum);

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

       foreach (KeyValuePair<int, int> param in dicLight)

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

   }

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

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

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

 

 

責任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2023-02-04 18:24:10

SeataJava業(yè)務(wù)

2021-03-16 05:44:26

JVM面試題運行時數(shù)據(jù)

2017-03-10 09:33:16

JavaScript類型

2022-04-08 07:52:17

CSS面試題HTML

2024-10-11 17:09:27

2011-06-14 09:12:03

JavaScript

2009-08-11 15:09:44

一道面試題C#算法

2018-03-06 15:30:47

Java面試題

2011-05-23 11:27:32

面試題面試java

2009-08-11 10:12:07

C#算法

2017-11-21 12:15:27

數(shù)據(jù)庫面試題SQL

2021-05-31 07:55:44

smartRepeatJavaScript函數(shù)

2009-08-11 14:59:57

一道面試題C#算法

2021-10-28 11:40:58

回文鏈表面試題數(shù)據(jù)結(jié)構(gòu)

2011-03-02 10:58:16

SQL server入門面試題

2023-08-01 08:10:46

內(nèi)存緩存

2017-09-13 07:15:10

Python讀寫文件函數(shù)

2021-03-27 10:59:45

JavaScript開發(fā)代碼

2022-02-08 18:09:20

JS引擎解析器

2018-02-01 16:26:44

面試題static變量
點贊
收藏

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

主站蜘蛛池模板: 在线免费观看黄色 | 日韩精品四区 | 日韩国产在线 | 亚洲精品久久久一区二区三区 | 国产精品女人久久久 | 欧美久久一区二区 | 精品国产欧美一区二区三区成人 | 99久久国产免费 | 国产精品视频一区二区三区 | 国产日产欧产精品精品推荐蛮挑 | 婷婷综合色 | 国产美女在线看 | 国产精品久久久 | 在线视频亚洲 | 国产激情视频网站 | 国产三级国产精品 | 国产精品视频中文字幕 | 日本高清视频在线播放 | 精品国产一区二区三区av片 | 在线播放中文字幕 | 97超碰在线免费 | 国产成人精品一区二三区在线观看 | 欧美freesex黑人又粗又大 | 久久精品91久久久久久再现 | 黄色成人在线观看 | 在线观看视频91 | 国产精品亚洲一区 | 亚洲精品国产第一综合99久久 | 999久久久 | 成人在线国产 | 日韩不卡一区二区三区 | 99久久精品免费看国产免费软件 | 久久99蜜桃综合影院免费观看 | 亚洲一区二区中文字幕 | 男女啪啪网址 | 国产精品亚洲一区二区三区在线 | 亚洲免费视频在线观看 | 亚洲www.| 天天综合久久 | 国产九九精品视频 | 久久久久国产一级毛片 |