c++怎么做拆数?

c++怎么做拆数?,第1张

代码:

#include <iostream>

using namespace std

int main()

{

int l

string s

cin>竖衫>s

l=s.length()

for(int i=0i<li++)

for(int j=1i+j<=lj++)

{

cout<余让腔<s.substr(i,j)

if(i!=l-1)

cout<<" "

}

return 0

}

截滑肆图:

我认为根据题的厅举卜要求应该这样:

#include<stdio.h>

void decomp(int n,int k)

int a[100]

void decomp(int n,int k)

{

int i,j

for(j=nj>答游=1j--)

{

a[k]=j

if(n-a[k]==0&&a[k-1]>=a[k])

{

printf("%d=%d",a[0],a[1])

for(i=2i<=ki++)

printf("扮穗+%d",a[i])

printf("\n")

}

else

{

if(a[k-1]>=a[k]) decomp(n-a[k],k+1)

}

}

}

void main()

{

int m=4

a[0]=m

decomp(m,1)

}

题目中要求如何对整数拆分呢?

这个是有递推公式的:

(1)比较容易理解,把m个数划分为 0<=k<=m个数的和,就是

1. 分k = m次,此时只有一种方法

2.分k <m次,此时的结果是 Chai(m, n-1)

(2)我借鉴了下面博客中的说法。

对于m >n的问题,可以看做把m个苹果放到n个盘子上,有多少种分发。然后把这个问题分为两个部分:

1.分完之后,个数最少的盘子中的苹果数为0.

2.分完之后,个数最少的盘子中的苹果数不为吵姿0.

然后

1.就对应着,让其中的一个盘子为空,其他的就转化为把m个苹果放在氏埋n-1个盘子问题歼碰蚂,也就是Chai(m, n-1)

2.也就是对这个,先在n个盘子上都放一个(保证他们都不为空),然后其他的就转化为,在n个盘子上,放m-n个苹果的问题:Chai(m-n, n)

http://blog.csdn.net/clearriver/article/details/4604247


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12479889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存