亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

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

注意點(diǎn):

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

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

3.在寫遞歸的時(shí)候(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;
 }
}

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

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

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

/**
 雙色球 普通選注
 */
- (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;
 }
}

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

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

總結(jié)

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

相關(guān)文章

  • iOs遷至WKWebView跨過的一些坑

    iOs遷至WKWebView跨過的一些坑

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

    iOS獲取cell中webview的內(nèi)容尺寸

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

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

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

    iOS中解決Xcode 8控制臺(tái)亂碼的方式

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

    iOS定時(shí)器的選擇CADisplayLink NSTimer和GCD使用

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

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

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

    Objective-C基礎(chǔ) 自定義對(duì)象歸檔詳解及簡單實(shí)例

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

    iOS獲取Label高度的幾種方法與對(duì)比

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

    如何在IOS中使用Cordova插件

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

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

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

最新評(píng)論