整数划分问题!!!

老胡 - laohu 2011-05-04 11:42:04
整数的分划问题。
如,对于正整数n=6,可以分划为:
6
5+1
4+2, 4+1+1
3+3, 3+2+1, 3+1+1+1
2+2+2, 2+2+1+1, 2+1+1+1+1
1+1+1+1+1+1+1
现在的问题是,对于给定的正整数n,编写算法打印所有划分。
用户从键盘输入 n (范围1~10)
程序输出该整数的所有划分。

求解。。。。
...全文
548 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称很不好取 2011-05-05
  • 打赏
  • 举报
回复
对于正整数n解法分解为以下几部分:
1,出现的最大因子是n-1,也就是n = (n-1) + 1
2,出现的最大因子是n-2,也就是n = (n-2) + 2 或 n = (n-2) + 1 + 1
3,...
n-1,出现的最大因子是1,也就是n = 1+1+...+1
-------------------------------------
总结下以上几个部分之间的关联,然后合起来就是了
ljt3969636 2011-05-05
  • 打赏
  • 举报
回复

int split(int n)
{
int nCount = 0;

int i, j;
int x;
int t;
for (i = 1; ((i * (i+1)) / 2 <= n); ++i)
{
t = (i * (i - 1)) / 2;
if ((n-t)%i)
{
continue;
}
x = (n - t) / i;
for (j = x; j <= x+i-1; ++j)
{
cout<<j<<"\t";
}
cout<<endl;
++nCount;
}
return nCount;
}

split(100);
AnYidan 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huyongl1989 的回复:]
题目要求是打印出这些划分,不是求出有多少种划分
[/Quote]

你都求出来了,难道不会打印吗?
老胡 - laohu 2011-05-05
  • 打赏
  • 举报
回复
题目要求是打印出这些划分,不是求出有多少种划分
赵4老师 2011-05-05
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
int L=0;
void print(int res[], int num) {
L++;
printf("%8d:",L);
for (int i = 0; i < num; ++i) {
printf("%d ", res[i]);
}
printf("\n");
}
void split(int n, int m) {// n表示总数,m表示最大因子
static int res[100];// 保存结果
static int num = -1;// 当前因子下标
num++;

if (0 == n) {// 递归终止条件,为0不可再分,直接输出
print(res, num+1);
num--;
return;
} else {
if (n == m) {// 不拆,直接输出
res[num] = m;
print(res,num+1);
num--;
} else {
// 拆分出第一个
res[num] = m;
n = n-m;

if (m>n) m = n; // 最大因子不可能大于总数

for (int i = m; i>=1; --i) {// 循环,第二个因子可以继续拆分,而且按照最大因子不同可以拆分成多个
split(n, i);
}
num--;
}
}
}
void Split(int n) {
if (n<=0) return;
if (1==n) {
L++;
printf("%8d:1 \n",L);
return;
}
if (100<n) {
printf("Up to 100\n")
return;
}
for (int i = n-1; i>=1; i--) {
split(n, i);
}
}
void main(int argc,char **argv) {
if (argc<=1) Split(5);
else Split(atoi(argv[1]));
}
warren258 2011-05-05
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20071107/22/23cc82c7-6029-4d51-9c8b-64133c60cd14.html?99684
第48个。。我也没测试过。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧