`
andyliuxs
  • 浏览: 138942 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

子集和数问题的实现

 
阅读更多

源代码:

#include <stdio.h>
#define N 8
int X[N]={0};
int W[N];
int M,NUM=0;
int main()
{
 void input();
 void sumofsub(int,int,int);
 int s,r,k;
 input();
 s = r = 0;
 for(k=0;k<N;k++)
  r += W[k];
 k = 0;
 if(M > r || M < W[0])
  printf("no answer!\n");
 else
 {
  sumofsub(s,k,r);
 }
 return 0;
}
void input()
{
 int i;
 printf("input the set of W[1-%d]:",N);
 for(i=0;i<N;i++)
 {
  scanf("%d",&W[i]);
 }
 printf("input the sum M = ");
 scanf("%d",&M);
}
void sumofsub(int s,int k,int r)
{
 void print(int);
 X[k] = 1;
 if(s+W[k] == M)
  print(k);
 else
 {
  if(s+W[k]+W[k+1] <= M)
   sumofsub(s+W[k],k+1,r-W[k]);
 }
 if(s+r-W[k] >= M && s+W[k+1] <= M)
 {
  X[k] = 0;
  sumofsub(s,k+1,r-W[k]);
 }
}
void print(int k)
{
 int i;
 NUM++;
 printf("the %dth answer is:",NUM);
 for(i=0;i<=k;i++)
 {
  printf("%d ",X[i]);
 }
 for(;i<N;i++)
 {
  printf("%d ",0);
 }
 printf("\n");
}

结果:

input the set of W[1-8]:1 2 3 4 5 6 7 8
input the sum M = 8
the 1th answer is:1 1 0 0 1 0 0 0
the 2th answer is:1 0 1 1 0 0 0 0
the 3th answer is:1 0 0 0 0 0 1 0
the 4th answer is:0 1 0 0 0 1 0 0
the 5th answer is:0 0 1 0 1 0 0 0
the 6th answer is:0 0 0 0 0 0 0 1

 

分享到:
评论

相关推荐

    子集和数 C语言求解

    在编程领域,子集和数问题是一个经典的算法问题,它要求我们从给定的数集中找出所有可能的子集,使得这些子集的元素之和等于一个特定的目标值。在这个问题中,我们使用C语言来解决,同时标签指出了解决这个问题的一...

    子集和数问题(回溯法)

    给定N个数,和一个整数M,判定是否可以从N个数中取出若干个数,使它们的和等于M。输出:YES或者NO。把N个数看成一个集合,问题就是从这个集合中选出一个子集,使这个子集满足和是M

    1122 子集和数问题

    【子集和数问题】是计算机科学中一种经典的组合优化问题,主要涉及到回溯法的运用。该问题的目标是寻找一个给定集合的子集,使得这个子集的元素之和等于特定的目标值。在本例中,问题通过C语言进行编程解决。 ...

    sumofsub.rar_SumOfSub_回溯法_回溯法子集和_子集和数_子集和数问题

    在“子集和数问题”中,我们通常要寻找一个集合的所有可能子集,这些子集的元素之和等于一个特定的目标值。本示例中的“sumofsub.rar”文件提供了回溯法解决此类问题的具体实现。 首先,我们需要理解问题的定义。...

    子集打印问题~新奇算法

    本文将深入探讨一个经典问题——打印子集问题,并介绍一种新奇的算法解决策略。"子集打印问题"通常指的是从一个给定的集合中找出所有可能的子集,并将其打印出来。这个问题在计算机科学中具有重要的理论价值,因为它...

    回溯法求解子集和问题

    以下是用Python实现的回溯法求解子集和问题的伪代码: 1. 定义一个函数`backtrack(current_sum, current_subset, target, nums)`,其中: - `current_sum`是当前子集的和。 - `current_subset`是一个列表,表示...

    求解子集和数

    在编程领域,子集和问题是一个经典的问题,它涉及到算法设计和实现,特别是与动态规划或回溯法相关的策略。本项目是用C++语言在Visual Studio 2010环境下开发的一个程序,用于解决此类问题。下面我们将深入探讨这个...

    回溯法求解子集和数给定一个n个整数的集合X={x1,x2....xn}和整数y,找出和等于y的X的子集Y.

    3. **算法实现步骤**:分析给定代码,详细介绍回溯法在解决子集和问题中的具体实现过程。 4. **示例分析与结果验证**:通过一个具体的示例来展示如何使用回溯法找到满足条件的子集,并验证结果。 ### 子集和问题...

    获取分类子集和数组.zip_withjbg_分类集合

    在压缩包文件"获取分类子集和数组"中,可能包含了实现这一功能的代码示例、数据表样例或者相关文档。分析这些文件可以进一步了解具体实现的细节和上下文,包括如何处理多级子分类、是否考虑了性能优化(如使用递归...

    算法设计实验

    算法设计与分析 课程实验 实验1 归并排序分治策略的设计与实现 实验2 二分检索的递归与迭代算法设计 实验4_旅行消费问题 实验五_最小生成树的设计与...蛇和梯子问题 n皇后问题 组合数问题 填字游戏 子集和数问题 背包

    ACM国际大学生程序设计竞赛系列讲座——通用搜索算法及实现

    此外,“子集和数问题”是另一类搜索问题,它涉及到寻找一个集合的所有子集,并计算这些子集的和。动态规划和递归搜索技术在这里非常有用,可以帮助我们高效地求解。 最后,我们将触及“水杯问题”,这是一个需要...

    c语言实现C编译器c语言实现C编译器

    此外,C语言实现C编译器时可能会遇到一些挑战,例如递归定义的处理、指针和数组操作的复杂性,以及C预处理器的处理等。为了处理这些复杂性,开发者需要编写复杂的代码和数据结构,如自定义的词法分析器和解析器。 ...

    Mathcad 矩形和数组

    - **逻辑下标**:基于条件选择矩阵的子集,实现数据筛选。 - **使用find函数**:定位满足特定条件的元素位置,对于数据分析非常有用。 ### 控制命令窗口的输入与输出 在进行复杂的数学计算时,控制命令窗口的显示...

    分治法解决凸包问题(用C语言递归调用实现)

    - **子凸包处理**:通过一系列复杂的逻辑判断和数组操作,将原始点集划分为两个子集,并分别处理这些子集。 - **合并子凸包**:最后通过合并处理后的子凸包来获得完整的凸包。 #### 六、总结 通过上述分析,我们...

    算法8_回溯法n1

    6. 应用示例:回溯法常用于解决诸如n-皇后问题、子集和数问题、图的着色、哈密顿环、0/1背包问题和批处理作业调度等经典问题。这些问题通常具有大量的潜在解,但需要满足特定的约束条件。 通过上述内容,我们可以...

    算法实验-内含源码以及设计说明书(可以自己运行复现).zip

    8. **子集和数.py**:可能涉及计算所有子集的和,这与动态规划和组合数学相关,可能用于求解子集和为特定值的问题。 9. **0-1背包问题.py**:另一个0-1背包问题的实现,可能是不同的解法或者优化版本。 10. **图...

    高级算法程序设计(头歌平台educoder)。

    2. **子集和数**:通过回溯搜索所有可能的子集,找出满足特定条件的子集和。 **动态规划**是一种优化技术,通过存储子问题的解来避免重复计算,通常用于解决具有重叠子问题和最优子结构的问题。在Educoder的动态...

    算法与程序设计:第5章 回溯法.ppt

    通过以上步骤,回溯法能够有效地解决0-1背包问题和其他类似的组合优化问题,如n皇后问题、子集和数问题、图的着色问题、旅行商问题和连续邮资问题等。回溯法的优势在于其灵活性和通用性,可以适应多种问题类型,但...

    第06章--回溯法1-新1

    2. 子集和数问题:找出一个集合的所有子集,使得子集的元素之和等于特定数值。 3. 图的着色问题:给定一张图,用最少的颜色给各个顶点涂色,使得相邻的顶点颜色不同。 总的来说,回溯法是一种强大的算法,它通过有...

    java8看不到源码-are-we-fast-yet:我们快了吗?比较语言实现与对象、闭包和数组

    )形成对比,后者鼓励寻找最聪明的方法来用语言表达问题以实现最佳性能。 方法 为了让我们能够比较实现完成的优化程度以及实现的绝对性能,我们设置了以下基本规则: 所有语言的基准都是“相同的”。 这是通过仅依赖...

Global site tag (gtag.js) - Google Analytics