• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: C/C++
  • 标签: 子集和  回溯  c++  

资源简介

一个程序,很好的。是关于如何用回溯法求子集和的。

资源截图

代码片段和文件信息

// 子集和.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include “stdio.h“
#include “iostream“
using namespace std;

int backtrack(int arr[]int nint sum);
struct SUBBUFF
{
int data;//存放当前的值
char IsIn;//记录当前值是否加入了子集
};

int main(int argc char* argv[])
{
int nsum; //定义了集合元素个数,以及要求的子集的和
cout<<“输入元素个数:“;
cin>>n;
cout<<“输入要求的子集和:“;
cin>>sum;
SUBBUFF *arr = new SUBBUFF[n];
int i=0;
cout<<“初始的集合元素“< for (i=0;i {
cin>>arr[i].data;
arr[i].IsIn = ‘N‘;//将当前的值的初始化状态设为 ‘N‘表示不在子集中
}
int pointto = 0countsum = 0;//当前指向的角标,和现在的子集和
while (pointto>=0)//进入循环,开始回溯
{
if (arr[pointto].IsIn == ‘N‘)//向子集里面增加值
{
countsum +=arr[pointto].data;
arr[pointto].IsIn = ‘Y‘;
if (countsum == sum)//找到答案,输出结果
{

评论

共有 条评论