代码:
#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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)