程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WF4.0實戰(十三):解微軟一道面試題

WF4.0實戰(十三):解微軟一道面試題

編輯:關於.NET

題目:一個整數數列,元素取值可能是0—65535中的任意一個數,相同數值不會重復出現。0是例外,可以反復出現。

請設計一個算法,當你從該數列中隨意選取5個數值,判斷這5個數值是否連續相鄰。

注意:

1、5個數值允許是亂序的。比如: 8 7 5 0 6;

2、0可以通配任意數值。比如:8 7 5 0 6 中的0可以通配成9或者4;

3、0可以多次出現;

4、復雜度如果是O(n2)則不得分。

分析:通過分析你可以發現,題目只要滿足:除0之外的最大數減去除0之外的最小數小於等於4就行了。

故只要通過一個循環就5個數字中除0之外的最大數和最小數。求差之後與4做個比較就行了。偽代碼如下:

1 public boolean isContiguous(int[] array)
2   {
3   int min=-1;
4   int max=-1;
5    for(int i=0;i <array.length;i++)
6   {
7   if(array[i]!=0)
8   {
9   if(min==- 1||min>array[i])
10   {
11   min=array[i];
12   }
13   if(max==-1||max <array[i])
14    {
15   max=array[i];
16   }
17   }
18   }
19   return max-min <=array.length-1;
20    }

下面讓我用WF4.0來實現解這個題目,思路和上面代碼思想是一致的。

流程:

實現:

1、產生隨機數流程GenerateRandom流程,如下圖:

2、驗證產生的數字是否滿足條件:

3、輸出結果:

4、整個流程:

運行結果:

0~65535范圍太大,很難產生出5位連續的數字,將范圍縮小為1-6:

總結:這篇文章主要說明使用WF4.0和你寫一般的C#代碼一樣,復雜的邏輯它也可以實現。一些復雜的算法可能會因為它的可視化編程而 變得更簡單。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved