5-37 整数分解为若干项之和 (20分)
2016-05-24 23:32
169 查看
#include<stdio.h>
int s[100];//拆分结果保存在这个数组里
int top;//记录个数
int total, n;//累加数和所求数
int k;
void dfs(int index)
{
int i;
if (total == n){
printf("%d=", n);
for (i = 0; i<top - 1; i++)
printf("%d+", s[i]);
k++;
if (k == 4 || top == 1){
k = 0;
printf("%d\n", s[top - 1]);
}
else
printf("%d;", s[top - 1]);
return;
}
if (total>n)
return;
for (i = index; i <= n; i++){
total += i;
s[top++] = i;
dfs(i);
total -= i;
s[--top];
}
}
int main()
{
while (scanf("%d",&n)==1){
k = 0;
top = 0;
total = 0;
dfs(1);
}
return 0;
}
int s[100];//拆分结果保存在这个数组里
int top;//记录个数
int total, n;//累加数和所求数
int k;
void dfs(int index)
{
int i;
if (total == n){
printf("%d=", n);
for (i = 0; i<top - 1; i++)
printf("%d+", s[i]);
k++;
if (k == 4 || top == 1){
k = 0;
printf("%d\n", s[top - 1]);
}
else
printf("%d;", s[top - 1]);
return;
}
if (total>n)
return;
for (i = index; i <= n; i++){
total += i;
s[top++] = i;
dfs(i);
total -= i;
s[--top];
}
}
int main()
{
while (scanf("%d",&n)==1){
k = 0;
top = 0;
total = 0;
dfs(1);
}
return 0;
}
相关文章推荐
- JEE开发1——OJDBC版本区别 [ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别]
- 外排序的实现(平台Linux & 语言C++)
- 5-36 复数四则运算 (15分)
- 第七届 科技节 电子设计大赛 一等奖作品---智慧生态园
- 第六次上机作业
- 池建国-锤子科技云平台研发总监
- 5-35 有理数均值 (20分)
- 任务和特权级保护(三)——《x86汇编语言:从实模式到保护模式》读书笔记34
- acm1005
- 可用的 kali 源(2016)
- @property
- 5-34 通讯录的录入与显示 (10分)
- 手抄代码1-5
- 5-33 有理数加法 (15分)
- 5-32 说反话-加强版 (20分)
- 范例:继承的应用:数组排序,反转
- 第六次c++作业
- C++实验6
- android菜鸟第一天
- PowerDesigner设置线风格(直线,折线。。。)