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

C++ 整數(shù)拆分方法詳解

 更新時(shí)間:2016年08月03日 16:47:45   作者:Code·Hadilo  
整數(shù)拆分,指把一個(gè)整數(shù)分解成若干個(gè)整數(shù)的和。本文重點(diǎn)給大家介紹C++ 整數(shù)拆分方法詳解,非常不錯(cuò),感興趣的朋友一起學(xué)習(xí)吧

一、問題背景

  整數(shù)拆分,指把一個(gè)整數(shù)分解成若干個(gè)整數(shù)的和

  如 3=2+1=1+1+1 共2種拆分

  我們認(rèn)為2+1與1+2為同一種拆分

二、定義

  在整數(shù)n的拆分中,最大的拆分?jǐn)?shù)為m,我們記它的方案數(shù)為 f(n,m)

  即 n=x1+x2+······+xk-1+xk ,任意 x≤m

  在此我們采用遞歸遞推法

三、遞推關(guān)系

  1、n=1或m=1時(shí) 

    拆分方案僅為 n=1 或 n=1+1+1+······

     f(n,m)=1

  2、n=m時(shí)

     S1選取m時(shí),f(n,m)=1,即n=m

     S2不選取m時(shí),f(n,m)=f(n,m-1)=f(n,n-1),此時(shí)討論最大拆分?jǐn)?shù)為m-1時(shí)的情況

    可歸納 f(n,m)=f(n,n-1)+1

  3、n<m時(shí)

     因?yàn)椴荒苓x取m,所以可將m看作n,進(jìn)行n=m時(shí)的方案,f(n,m)=f(n,n)

  4、n>m時(shí)

     S1選取m時(shí),f(n,m)=f(n-m,m),被拆分?jǐn)?shù)因選取了m則變?yōu)閚-m,且n-m中可能還能選取最大為m的數(shù)

     S2不選取m時(shí),f(n,m)=f(n,m-1),此時(shí)討論最大拆分?jǐn)?shù)為m-1時(shí)的情況

     可歸納 f(n,m)=f(n,m-1)+f(n-m,m)

總遞推式為

代碼如下

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int f(int n,int m)
{
if ((n!=1)&&(m!=1))
{
if (n>m) return f(n-m,m)+f(n,m-1);
else return 1+f(n,n-1);
}
else return 1;
}
void work()
{
int n,m;
cin>>n>>m;
cout<<f(n,m);
}
int main()
{
freopen("cut.in","r",stdin);
freopen("cut.out","w",stdout);
work();
return 0;
}

以上所述是小編給大家介紹的C++ 整數(shù)拆分方法詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • C語言版猜數(shù)字小游戲

    C語言版猜數(shù)字小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言版猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++的虛析構(gòu)詳解及實(shí)例代碼

    C++的虛析構(gòu)詳解及實(shí)例代碼

    這篇文章主要介紹了C++的虛析構(gòu)詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 一文掌握 C++ 智能指針的使用方法

    一文掌握 C++ 智能指針的使用方法

    C++11 引入了智能指針的概念,使用了引用計(jì)數(shù)的想法,讓程序員不再需要關(guān)心手動(dòng)釋放內(nèi)存。關(guān)于C++指針得內(nèi)容下面文章將為大家做一個(gè)詳細(xì)介紹
    2021-09-09
  • VC枚舉串口端口應(yīng)用

    VC枚舉串口端口應(yīng)用

    這篇文章主要介紹了VC枚舉串口端口應(yīng)用,羅列了常見的一些串口端口的應(yīng)用實(shí)例,需要的朋友可以參考下
    2014-10-10
  • C++?自定義單向鏈表?ListNode詳情

    C++?自定義單向鏈表?ListNode詳情

    這篇文章主要介紹了C++?自定義單向鏈表?ListNode詳情,文章將介紹鏈表中不帶頭結(jié)點(diǎn),沒有存放鏈表長(zhǎng)度的節(jié)點(diǎn),從頭結(jié)點(diǎn)開始就存放數(shù)據(jù)得一種,具有一定得參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • 詳解C語言位域的使用與注意事項(xiàng)

    詳解C語言位域的使用與注意事項(xiàng)

    所謂“位域”是把一個(gè)字節(jié)中的二進(jìn)位劃分為幾個(gè)不同的區(qū)域, 并說明每個(gè)區(qū)域的位數(shù)。每個(gè)域有一個(gè)域名,允許在程序中按域名進(jìn)行操作。 這樣就可以把幾個(gè)不同的對(duì)象用一個(gè)字節(jié)的二進(jìn)制位域來表示。下面這篇文章就給大家介紹下關(guān)于C語言中位域的使用與注意事項(xiàng)。
    2016-12-12
  • 如何在Qt中實(shí)現(xiàn)關(guān)于Json?的操作

    如何在Qt中實(shí)現(xiàn)關(guān)于Json?的操作

    JSON是一種輕量級(jí)數(shù)據(jù)交換格式,常用于客戶端和服務(wù)端的數(shù)據(jù)交互,不依賴于編程語言,在很多編程語言中都可以使用JSON,這篇文章主要介紹了在Qt中實(shí)現(xiàn)關(guān)于Json的操作,需要的朋友可以參考下
    2023-08-08
  • C語言數(shù)組超詳細(xì)講解中篇三子棋

    C語言數(shù)組超詳細(xì)講解中篇三子棋

    數(shù)組是一組有序的數(shù)據(jù)的集合,本篇將帶你結(jié)合數(shù)組來實(shí)現(xiàn)三子棋小游戲,上手實(shí)練更快的能夠掌握數(shù)組使用,感興趣的朋友來看看吧
    2022-04-04
  • C++?smart?pointer全面深入講解

    C++?smart?pointer全面深入講解

    一般在C/C++中,如果我們使用了pointer來指向某塊heap區(qū)域,當(dāng)不再需要這塊區(qū)域的時(shí)候,我們需要手動(dòng)刪除它。如果忘了的話,就會(huì)產(chǎn)生memory?leak
    2022-08-08
  • 深入分析C++模板特化與偏特化

    深入分析C++模板特化與偏特化

    這篇文章主要介紹了C++模板特化與偏特化的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論

凌云县| 襄垣县| 敦化市| 游戏| 本溪| 合水县| 丹巴县| 海原县| 遵义市| 洛隆县| 建阳市| 扎鲁特旗| 阿克苏市| 兴仁县| 酒泉市| 易门县| 织金县| 玉山县| 宣化县| 谷城县| 海原县| 汶上县| 柏乡县| 讷河市| 英吉沙县| 铁岭县| 郯城县| 大姚县| 华宁县| 南阳市| 慈溪市| 临潭县| 定日县| 来宾市| 正镶白旗| 若羌县| 会泽县| 瑞金市| 柏乡县| 巴马| 张北县|