求解一个题的思路

来源:百度知道 编辑:UC知道 时间:2024/05/13 04:53:17
用户输入一个int数组,怎么按依次打印出数组中各个数相加的值

如 int i={3,4,8,2};
打印出的结果是
17
15
14
13
12
.....

这样的!
麻烦给个循环思路,最好用c或c#定一下代码!

谢谢
只是二楼说的依次得到总和的顺序
最大的是3+4+8+2 =17
接下来是3+4+8=15
接下来是4+8+2=14

这样!
二楼可不可以把程序写得更简单一点,只用一个方法,只带一个int[] a参数

【思路,把能够得到的所有的数据都保存起来,最后排序,输出】
题目就是要在输入的数据中,要么选择第i个数,要么不选,最后可能得到的总和排序,从大到小输出,代码分别如下;
一个参数的你可以这么办:你给我那个函数写一个包装函数,把我的那个函数放在你的那个函数里面,然后你用你的函数调用,但是我那个函数必须要那么多参数。否则就只能当全局变量。

C语言的:
#include <stdio.h>

int b[20];
int cnt;

void DFS(int * a,int cur,int size,int sum)
{
if(cur==size)
{
b[cnt++]=sum;
return ;
}
DFS(a,cur+1,size,sum+a[cur]);
DFS(a,cur+1,size,sum);
}

void sort(int * begin,int * end)
{
int * p,* q;
for(p=begin;p!=end;p++)
{
for(q=p+1;q!=end;q++)
{
if(* p<* q)
{
int tmp=* p;
* p=* q;
* q=tmp;
}
}
}
}

void main()
{
int a[]={3,4,8,2};
int i;
cnt=0;
DFS(a,0,4,0);
sort(b,b+cnt); //排序 for(i=0;i<cnt;i++)
printf("%d\n",b[i]);
}

***************************************
C#语言的: