中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      程序員打靶問題及解析

      時間:2020-11-07 17:41:55 面試問題 我要投稿

      程序員打靶問題及解析

      面試?yán)} 1:一個射擊運動員打靶,靶一共有 10 環(huán),連開 10 槍打中 90 環(huán)的可能性有多少種?請用遞歸算法編程實現(xiàn)。[中國某著名通信企業(yè) H面試題]
      解析:靶上一共有 10 種可能——1 環(huán)到 10 環(huán),還有可能脫靶,那就是 0 環(huán),加在一起共 11 種可能。這是一道考循環(huán)和遞歸的面試題。我們在這個程序中將利用遞歸的辦法實現(xiàn)打靶所有可能的演示,并計算出結(jié)果。讀者會問,難道一定要使用遞歸?當(dāng)然不是。我們也可以連續(xù)用 10個循環(huán)語句來表示程序,代碼如下:
      for (i1=0;i1<=10;i1++)
      {
      for (i2=0;i2<=10;i2++)
      {
      for (i3=0;i3<=10;i3++)
      {
      ......
      for (i10=0;i10<=10;i10++)
      {
      if(i1+i2+i3+...+i10=90)
      Print();
      }
      ......
      }
      }
      }
      但是,上面的循環(huán)程序雖然解決了問題,但時間復(fù)雜度和空間復(fù)雜度無疑是很高的。比較好的辦法當(dāng)然是采用遞歸的方式,事實上公司也就是這么設(shè)計的。遞歸的條件由以下 4 步完成:
      (1)如果出現(xiàn)這種情況,即便后面每槍都打 10 環(huán)也無法打夠總環(huán)數(shù) 90,在這種情況下就不用再打了,則退出遞歸。代碼如下:
      if(score < 0 || score > (num+1)*10 ) //次數(shù)num 為0~9
      {
      return;
      }
      (2)如果滿足條件且打到最后一次(因為必須打 10 次),代碼如下:
      if(num == 0)
      {
      store2[num] = score;
      Output( store2);
      return;
      }
      (3)如果沒有出現(xiàn)以上兩種情況則執(zhí)行遞歸,代碼如下:
      for(int i = 0; i <= 10; ++i)
      {
      //這里實際上為了方便把順序倒了過來,store2[9]是第1 回
      //store2[8]是第 2 回⋯⋯store2[0]是第 10 回
      store2[num] = i;
      Cumput(score - i, num - 1,store2);
      }
      (4)打印函數(shù),符合要求的.則把它打印出來。代碼如下:
      public static void Output(int[] store2)
      {
      for(int i = 9; i>=0; --i)
      {
      Console.Write(" {0}",store2[i]);
      }
      Console.WriteLine();
      sum++;
      }
      答案:
      用 C#編寫的完整代碼如下:
      using System ;
      public class M
      {
      //public static int[] store;
      //相當(dāng)于設(shè)置了全局變量
      //這個全局變量sum 是包含在M 類中的
      public static int sum;
      public M()
      {
      int sum =0;
      // int[] store = {1,2,3,4,5,6,7,8,9,0};
      }
      //打印函數(shù)
      //符合要求的則把它打印出來
      public static void Output(int[] store2)
      {
      for(int i = 9; i>=0; --i)
      {
      Console.Write(" {0}",store2[i]);
      }
      Console.WriteLine();
      sum++;
      }
      //計算總數(shù),返回 sum 值
      public static int sum2()
      {
      return sum;
      }
      public static void Cumput(int score, int num, int[] store2 )
      {
      //如果總的成績超過了90 環(huán)(也就是 score<0),或者如果剩下要打靶
      //的成績大于10 環(huán)乘以剩下要打的次數(shù),也就是說即便后面的都打10 環(huán)
      //也無法打夠次數(shù),則退出遞歸
      if(score < 0 || score > (num+1)*10 ) //次數(shù)num 為 0~9
      {
      return;
      }
      //如果滿足條件且達(dá)到最后一層
      if(num == 0)
      {
      store2[num] = score;
      Output( store2);
      return;
      }
      for(int i = 0; i <= 10; ++i)
      {
      store2[num] = i;
      Cumput(score - i, num - 1,store2);
      }
      //Console.Write(" {0}",store2[5]);
      }
      }
      public class myApp
      {
      public static void Main( )
      {
      int[] store;
      store = new int[10];
      int sum = 0;
      //int a=90;
      //int b=9;
      //Output();
      M.Cumput(90,9,store);
      sum = M.sum2();
      //M.Cumput2(a,b,store);
      //Console.Write(" {0}",store[3]);
      //cout<<"總數(shù):"<<sum<<endl;
      Console.Write(" 總數(shù): {0}",sum);
      }
      }
      程序結(jié)果一共有 92 378 種可能。
      也可以用 C++編寫,代碼如下:
      #include <iostream>
      using namespace std;
      int sum;
      int store[10];
      void Output()
      {
      for(int i = 9; i>=0; --i)
      {
      cout<<store[i]<<" ";
      }
      cout<<endl;
      ++sum;
      }
      void Cumput(int score, int num)
      {
      if(score < 0 || score > (num+1)*10 ) //次數(shù)num 為0~9
      return;
      if(num == 0)
      {
      store[num] = score;
      Output();
      return;
      }
      for(int i = 0; i <= 10; ++i)
      {
      store[num] = i;
      Cumput(score - i, num - 1);
      }
      }
      int main(int argc, char* argv[])
      {
      Cumput(90, 9);
      cout<<"總數(shù):"<<sum<<endl;
      return 0;
      }

      【程序員打靶問題及解析】相關(guān)文章:

      程序員面試問題及答案10-08

      意大利留學(xué)常見問題及解析08-17

      職場新人常見問題及解析10-20

      面試常見問題及回答技巧解析12-15

      新加坡留學(xué)反簽證相關(guān)問題及解析10-18

      俄羅斯留學(xué)的問題及詳細(xì)解析07-11

      留學(xué)荷蘭的常見簽證問題及解析06-20

      常見的面試問題及答案解析11-06

      MBA提前批面試高頻問題及思路解析09-04

      英語面試問題大解析及情景對話09-13

      主站蜘蛛池模板: 漂亮的小少妇诱惑内射系列| 9丨精品国产高清自在线看| 国产性一交一乱一伦一色一情| 久久久婷婷综合五月天| 亚洲加勒比无码一区二区在线播放| 宜昌市| 亚洲三级在线播放| 尤物yw午夜国产精品视频| 日韩中文字幕久久久经典网| 拉孜县| 国产青青草视频在线播放| 丁香六月久久| 无码人妻丰满熟妇区免费| 日韩在线观看中文字幕一区二区| 长岛县| 永川市| 亚洲高清在线观看免费视频| 国产av一区二区三区东北熟女| 国产高清精品在线二区| 国产一区二区精品网站看黄| 99精品视频69v精品视频免费| 张家川| 国产精品污一区二区三区| 日本久久久精品国产一区| 亚洲高清美女久久av| 一区二区三区免费观看在线视频| 无码视频一区二区三区在线播放 | 老肥熟女老女人野外免费区| 国产一区亚洲欧美成人| 亚洲国产精品免费一区| 国产福利一区二区三区视频在线看| 伊人色综合九久久天天蜜桃| 高碑店市| 国产女主播免费在线观看| 美腿丝袜一区二区三区| 午夜在线观看视频二区| 亚洲午夜久久久精品国产| 国产欧美久久久精品影院| 亚洲va精品va国产va| 国产美女三级视频网站| 亚洲一区二区在线精品|