已知一组数据,还已知其中N个元素它们的和,求出这些元素。

tht228 2019-06-22 02:31:45
一组数据是 1,2,4,8,100,200,400,800,10000,20000,40000,80000.
其中,n个数的和是20108. 怎么才能把这n个元素给分析出来啊?
最后想要的结果是 n=3 ,这3个元素是8,100,20000。

C语言。
...全文
173 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdonghai 2019-06-26
  • 打赏
  • 举报
回复
问题的规模小,适合用回溯算法求解。

#include "stdafx.h"
#include "stdio.h"

int d[]={0,1,2,4,8,100,200,400,800,10000,20000,40000,80000};
int a[50]={};
int csum=20108;

void dfs(int n, int step, int sum)
{
if (sum<0) return;
if (sum==0)
{
for (int i=1; i<=step-1; i++)
{
if (a[i]>0)
printf("%d\n",a[i]);
}

printf("\r\n");
return;
}

for (int i=step; i<=n-1; i++)
{
a[step]=d[i];
dfs(n,i+1,sum-d[i]);
a[step]=0;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int n=sizeof(d)/sizeof(int);
dfs(n,1,csum);
getchar();
return 0;
}


rered2019 2019-06-22
  • 打赏
  • 举报
回复
12层for 循环 ,每一个循环里判断是不是满足数据和,然后记录序列号。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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