最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS中排列組合算法的使用小結(jié)

 更新時間:2018年09月18日 10:44:55   作者:橘子star  
這篇文章主要給大家介紹了關(guān)于iOS中排列組合算法使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

最近在項目中用到了排列組合計算,雖然比較簡單,但是整個學習過程還是要記錄下來的,以便以后可以吸取經(jīng)驗。

一般來說,排列組合就等于搜索。

注意點:

1.去重復(fù):規(guī)定子集順序必須升序;

2.候選數(shù)組的結(jié)果處理。必須深拷貝,否則最后的結(jié)果集里全是空的(加了一堆指針)。

3.在寫遞歸的時候(DFS:深度優(yōu)先搜索),思路是先把以 1 開頭的都找出來,再把 2 開頭的都找出來 …… 所有在遞歸之前做過的事情,之后都要把它抹回來。遞歸做的事情能一句話描述清楚。遞歸就是不斷地把規(guī)模變小,但是都做的一件事情。

方法如下:

最開始的思路是用階乘去解決排列組合的問題,所以就想到了遞歸。

long arithmetic(int n)
{
 if (n>1) {
 return n*arithmetic(n-1);
 }else if (n == 1){
 return 1;
 }else{
 return 1;
 }
}

但是遞歸的話,有一個弊端,數(shù)字達到一定程度的時候,它會出現(xiàn)值越界的情況,就算是用long long類型,也還是會出現(xiàn)越界的情況。所以用階乘的這種方式,被暫時擱置。

想到的第二種思路是用for循環(huán)去解決問題。僅僅只用到排列這種算法,階乘還是非用不可得,但是就組合而言,完全可以換另一種方式去解決。

解決的思路就是為了不讓數(shù)字值越界,可以讓分子和分母約分后,再乘下一個分子,再和分母約分。以此類推。話不多說,直接上代碼:

/**
 雙色球 普通選注
 */
- (long)lotterySSQPTRecursiveWithRedBalls:(NSUInteger)redBalls blueBalls:(NSUInteger)blueBalls{
 if (redBalls > 5 && blueBalls > 0) {
 if (redBalls == 6) {
  return blueBalls;
 }else{
  NSUInteger count = (redBalls-6 > 6) ? 6 : redBalls-6;
  long number = 1;
  long molecular = 1;
  long denominator = 1;
  for (int i = 0; i < count; i++) {
  molecular = molecular*(redBalls-i);
  denominator = denominator * (i+1);
  number = (molecular*number)/denominator;
  molecular = 1;
  denominator = 1;
  }
  number = number*blueBalls;
  
  return number;
 }
 }else{
 return 0;
 }
}

相比于直接用階乘,個人覺得還是for循環(huán)更好一些。如果有什么更好的解決思路,歡迎各位留言!

想要看Demo的小伙伴,點擊此處傳送 (本地下載

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • iOS開發(fā)之觸摸事件

    iOS開發(fā)之觸摸事件

    iOS設(shè)備都是可以多點觸摸的,是指手指放在iOS設(shè)備的屏幕上從屏幕上拖動或抬起。系統(tǒng)當前視圖響應(yīng)觸摸事件,若無響應(yīng)則向上層傳遞,構(gòu)成響應(yīng)者鏈。觸摸事件的函數(shù)有4個。
    2016-04-04
  • iOS中UIScrollerView的用法及基于AotoLayout的控件懸停

    iOS中UIScrollerView的用法及基于AotoLayout的控件懸停

    這篇文章主要介紹了iOS中UIScrollerView的用法及基于AotoLayout的控件懸停,文中對于UIScrollerView的方法及屬性介紹地非常詳細,十分推薦,示例代碼為Objective-C,需要的朋友可以參考下
    2016-03-03
  • iOS自定義雷達掃描擴散動畫

    iOS自定義雷達掃描擴散動畫

    這篇文章主要為大家詳細介紹了iOS自定義雷達掃描擴散動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • IOS中使用UIWebView 加載網(wǎng)頁、文件、 html的方法

    IOS中使用UIWebView 加載網(wǎng)頁、文件、 html的方法

    UIWebView 是用來加載加載網(wǎng)頁數(shù)據(jù)的一個框,接下來通過本文給大家介紹IOS中使用UIWebView 加載網(wǎng)頁、文件、 html的方法,對本文詳情感興趣的朋友一起學習吧
    2016-02-02
  • cmake ios終端下執(zhí)行提示錯誤 iOS version not found, tested: [5.0;5.1;6.0;6.1;7.0;8.3]的解決方案

    cmake ios終端下執(zhí)行提示錯誤 iOS version not found, tested: [5.0;5.1;6

    這篇文章主要介紹了cmake ios終端下執(zhí)行提示錯誤 iOS version not found, tested: [5.0;5.1;6.0;6.1;7.0;8.3]的解決方案的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 詳解2016 cocoapods的安裝和使用以及版本升級遇到的問題

    詳解2016 cocoapods的安裝和使用以及版本升級遇到的問題

    CocoaPods是一個負責管理iOS項目中第三方開源庫的工具。這篇文章主要介紹了2016 cocoapods的安裝和使用以及版本升級遇到的問題,有需要的可以了解一下。
    2016-12-12
  • IOS實現(xiàn)輸入驗證碼、密碼按位分割(二)

    IOS實現(xiàn)輸入驗證碼、密碼按位分割(二)

    這篇文章主要介紹了IOS實現(xiàn)輸入驗證碼、密碼按位分割的方法,在App內(nèi),密碼及驗證碼的輸入,采用按位輸入的方法,且位與位之間有分隔線,感興趣的小伙伴們可以參考一下
    2016-01-01
  • iOS10適配(必看)

    iOS10適配(必看)

    這篇文章主要介紹了iOS10適配(必看)的相關(guān)資料,本文圖文并茂介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • iOS webview捕獲H5按鈕方法示例代碼

    iOS webview捕獲H5按鈕方法示例代碼

    這篇文章主要給大家介紹了關(guān)于iOS webview捕獲H5按鈕方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • iOS TabBarItem設(shè)置紅點(未讀消息)

    iOS TabBarItem設(shè)置紅點(未讀消息)

    本文主要介紹了iOS利用TabBarItem設(shè)置紅點(未讀消息)的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-04-04

最新評論

屏东市| 南部县| 二手房| 金平| 绵竹市| 克东县| 旺苍县| 巴东县| 德格县| 塔城市| 图木舒克市| 吉林省| 安塞县| 西吉县| 宾川县| 辰溪县| 涪陵区| 临沂市| 望谟县| 涪陵区| 张家口市| 宜黄县| 苍南县| 辽宁省| 玉田县| 五河县| 祁东县| 剑河县| 古浪县| 宁明县| 紫金县| 科尔| 鹿泉市| 新野县| 泰宁县| 平顶山市| 荔浦县| 江西省| 白玉县| 浦江县| 灵川县|