1樓:刑部姬
#include
using namespace std;
int cnt=0;
int num[3]=;
void calc(int tot,int nownum,int pos)
{ if (pos==3if (tot==0cout<=1;inum[pos]=icalc(tot-i,i,pos+1num[pos]=0int main(void)
{ int a;
cin>>a;
calc(a,a-2,0);
cout<
直接遞迴做就行了,思路就是優先找第乙個拆分的數,剩下的每個被拆分的數不大於第乙個拆分的數,依此類推,就行。結果如下
1311 1 1
10 2 1
9 3 1
9 2 2
8 4 1
8 3 2
7 5 1
7 4 2
7 3 3
6 6 1
6 5 2
6 4 3
5 5 3
5 4 414
2樓:DoggyShadow
參考這個資訊競賽的題目
把乙個整數m分成三個正整數,就相當於把m-3個蘋果分進三個盤子所以直接用這道題的演算法來解決就行
連演算法都幫你寫好了(
3樓:劉醉白
這是整數拆分問題。兩種情況:
整數有序拆分用隔板法就可以得到個數。6個小球中間五個空位放兩塊隔板,分成三堆,每乙個隔板方案對應一組正整數解,答案是10。
整數無序拆分,可以用母函式計算。
這個例子比較特別,直接轉化為求3的無序分拆。求母函式(1+x+x+x)(1+x)(1+x)中x係數即可。答案是1·1·x+x·x·1+x·1·1,分別對應0×1+0×2+1×3=0+0+3,1×1 +1×2+0×3=1+2+0,3×1+0×2+0×3=1+1+1,對應原來的解為1+1+4,2+3+1,2+2+2。
下面有個簡單介紹。
趣談整數拆分(上) - 從「尤拉」到「拉馬努金」
演算法網上搜一下有很多。
將乙個正整數n分解成幾個正整數相加,可以有多種分解方法,有公式嗎?
雲淺知處 本文使用 Zhihu On VSCode 創作並發布 我們抓來 個小可愛,排成一排。現在如果想把 分成 個正整數的和,那就相當於把這 個小可愛分成 組,每組都至少有乙個小可愛。分成 組,就相當於在這一排小可愛中選 個空,在這個空這裡放一堵牆,把正在玩石頭剪刀布的小可愛隔開qwq。比如 八個...
是否存在乙個正整數集S,使得每個正整數都可以唯一表示成S中兩個數的差?
可以的。我們可以遞推的構造。S N 是乙個有限的正整數集合,T N 是S N中兩不同元素差組成的集合,滿足 1 S N中任何兩個元素差不同 2 T包含 但不包含N 1.因為S N有限,所以 T有限。存在正整數M 大於T中所有元素。記A為S N中最大的元素。令S S N 記T 為S 中兩個數差的集合。...
有乙個正整數N可以分解成若干個正整數之和,問如何分解能使這些數的乘積最大?求詳細解釋。
莫問君 591順便這也是和信安數學基礎 群論 裡乙個問題相關,就是在置換群大小確定的情況下,最大的置換週期是多少 星辰 首先是 1 吃飯不幹活 a b a b 大概就是這個意思,公式還有一點限制條件 2 2 4 2 3 5 2 4 6 3 3 6 3 4 7 綜合比較之下,是不是3 最划算 呢? 1...