[ L i n k \frak{Link} Link]
[ S u m m a r y \frak{Summary} Summary]
输入n,k。要求输出:
第一行: 将n划分成若干正整数之和的划分数。
第二行: 将n划分成k个正整数之和的划分数。
第三行: 将n划分成最大数不超过k的划分数。
第四行: 将n划分成若干个奇正整数之和的划分数。
第五行: 将n划分成若干不同整数之和的划分数。
第六行: 打印一个空行
第六行是什么鬼.gif
五个整数划分的经典问题。
第一个问题。单纯只有
n
\mathcal{n}
n的话并不好怎么讨论,考虑自己加限制。
能加的限制就是让划分出来的数不大于
m
\mathcal{m}
m。
F
(
i
,
j
)
\mathcal{F(i,j)}
F(i,j)。
分类讨论:每个数都小于
j
\mathcal{j}
j还是有至少一个数为
j
\mathcal{j}
j。
第二种情况可以直接从
F
(
i
−
j
,
j
)
\mathcal{F(i-j,j)}
F(i−j,j)转移过来。
第一种情况就是
F
(
i
,
j
−
1
)
\mathcal{F(i,j-1)}
F(i,j−1)。
第三个问题被第一个问题讨论了。
第四个问题由于全部奇偶性要相同,可以考虑对转移的时候对所有数同时加一。
新划分出一个数就是新加上一个一,这个要在奇数状态下进行。
所以就跟第二个问题比较类似。不过得分奇偶性。
第五个问题跟第一个问题比较类似。
考虑套用的时候重复计数的部分、
显然是第二种情况。
那么第二种情况改成从
F
(
i
−
j
,
j
−
1
)
\mathcal{F(i-j,j-1)}
F(i−j,j−1)转移。