数组求和

Thinkingking 2007-04-15 02:53:16
一个长度为n的数组arr,屏幕输出数组所有可能的和(从2个数到n数任意可能组合的和)函数原型void sumAll(int* arr, int n)

说下我的思路,求t(t从2到n)个数和时,先在a[0]到a[n - t]确定第一个数b1,然后在从b1到a[n-t-1]确定第二数,.......
请高手用C++代码实现,给出的算法复杂度越低越好
谢谢
...全文
444 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
不想低调 2007-04-16
  • 打赏
  • 举报
回复
mark
jixingzhong 2007-04-16
  • 打赏
  • 举报
回复
其他参考代码:
http://www.it130.net/C++/142078.htm
jixingzhong 2007-04-16
  • 打赏
  • 举报
回复
默认输入的m个数各不相同;

#include <stdio.h>
#include <stdlib.h>
#define MAX 20
int main(void)
{
int set[MAX];
int data[MAX];
int m, n, position;
int i;
printf("输入集合个数 M:");
scanf("%d", &m);
i=0;
printf("输入集合数据[%d个]:",m);
while (i<m)
{
scanf("%d", data+i);
}
printf("输入取出个数 n:");
scanf("%d", &n);
for(i = 0; i < n; i++)
set[i] = i+1;
for(i = 0; i < n; i++)
printf("%d ", data[set[i]-1]);
putchar('\n');
position = n - 1;
while(1)
{
if(set[n-1] == m)
position--;
else
position = n - 1;
set[position]++;
for(i = position + 1; i < n; i++)
set[i] = set[i-1] + 1;
for(i = 0; i < n; i++)
printf("%d ", data[set[i]-1]);
putchar('\n');
if(set[0] >= m - n + 1)
break;
}
return 0;
}
jixingzhong 2007-04-16
  • 打赏
  • 举报
回复
就是一个序列的组合问题,
对所有组合求和输出即可 ~
yuyunliuhen 2007-04-16
  • 打赏
  • 举报
回复
mark
fandouC 2007-04-16
  • 打赏
  • 举报
回复
从2个数到n数任意可能组合的和
这个任意组合咋实现??
  这个问题 我一直没搞懂
 请教各位!
yelling 2007-04-15
  • 打赏
  • 举报
回复
1 2 3 4 5
3 5 7 9
6 9 12
10 14
15
这种方法用来处理任意个连续的

如果都不一定连续
用母函数的方法来做

65,212

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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