欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS中排列組合算法的使用小結

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

前言

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

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

注意點:

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

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

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的小伙伴,點擊此處傳送 (本地下載

總結

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

相關文章

  • iOs遷至WKWebView跨過的一些坑

    iOs遷至WKWebView跨過的一些坑

    這篇文章主要給大家介紹了關于iOs遷至WKWebView跨過的一些坑,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • iOS獲取cell中webview的內容尺寸

    iOS獲取cell中webview的內容尺寸

    這篇文章主要介紹了iOS獲取cell中webview內容尺寸,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 舉例講解iOS應用開發(fā)中hitTest觸摸事件的編寫方法

    舉例講解iOS應用開發(fā)中hitTest觸摸事件的編寫方法

    這篇文章主要介紹了舉例講解iOS應用開發(fā)中hitTest觸摸事件的編寫方法,重點講解了兩個view之間的事件傳遞,需要的朋友可以參考下
    2016-04-04
  • iOS中解決Xcode 8控制臺亂碼的方式

    iOS中解決Xcode 8控制臺亂碼的方式

    這篇文章給大家介紹了iOS中解決Xcode 8控制臺亂碼的方式,文中給出了詳細解決步驟,相信對大家的理解和學習很有幫助,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • iOS定時器的選擇CADisplayLink NSTimer和GCD使用

    iOS定時器的選擇CADisplayLink NSTimer和GCD使用

    這篇文章主要為大家介紹了iOS定時器的選擇CADisplayLink NSTimer和GCD使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • iOS捕捉截屏事件并展示截圖效果

    iOS捕捉截屏事件并展示截圖效果

    這篇文章主要為大家詳細介紹了iOS捕捉截屏事件并展示截圖效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Objective-C基礎 自定義對象歸檔詳解及簡單實例

    Objective-C基礎 自定義對象歸檔詳解及簡單實例

    這篇文章主要介紹了Objective-C基礎 自定義對象歸檔詳解及簡單實例的相關資料,需要的朋友可以參考下
    2017-04-04
  • iOS獲取Label高度的幾種方法與對比

    iOS獲取Label高度的幾種方法與對比

    這篇文章主要介紹了給大家介紹了iOS獲取Label高度的幾種方法,包括 view的sizeThatFits 方法、view的sizeToFit方法、NSString的sizeWithAttributes方法和NSString 的 boundingRectWithSize 方法,文中不僅介紹四種方法的實現(xiàn),還進行了對比,下面來一起看看吧。
    2016-11-11
  • 如何在IOS中使用Cordova插件

    如何在IOS中使用Cordova插件

    這篇文章主要介紹了如何在IOS中使用Cordova插件,包括搭建和使用方法,如果對Cordova感興趣的同學,可以參考下
    2021-04-04
  • 詳解ios監(jiān)聽reloadData刷新列表完畢的時機

    詳解ios監(jiān)聽reloadData刷新列表完畢的時機

    這篇文章主要介紹了詳解ios監(jiān)聽reloadData刷新列表完畢的時機,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論