美文网首页算法
递归-7简单的0/1背包问题 去除相同的数

递归-7简单的0/1背包问题 去除相同的数

作者: 路灯下的黑猫H | 来源:发表于2017-03-16 15:37 被阅读0次

//

//ViewController.m

//CocoTest_1

//

//Created by S u p e r m a n on 2017/3/14.

//Copyright © 2017年张浩. All rights reserved.

//

#import"ViewController.h"

staticintmaxM =5;

staticintcount =0;

@interfaceViewController()

@end

@implementationViewController

- (void)viewDidLoad {

[superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

intm[10] = {5,2,3,4,9,6,7,8,1,10};

intm_t[10] = {0};

knap(m,0,m_t,0);

}

/**

设一个背包容纳的物品最大质量为m,现有n件物品,质量为m1,m2,… ,mn,均为正整数。要求从中挑选若干件,使背包质量之和正好为m.

(在此问题中,第i件物品要么取,要么不取,不能取一部分,故问题可能有解,可能无解)

*/

voidknap(int*m,intn,int*m_t,intstartIndex) {

if(n <10) {

intsum =0;

for(inti =0; i<10; i++) {

sum += m_t[i];

}

if(sum ==maxM) {

printf("第%02d个: = ",count+1);

for(inti =0; i<10; i++) {

printf(" %d ",m_t[i]);

}

printf("\n");

count++;

}else{

for(inti = startIndex; i<10; i++) {

if(m_t[i] ==0) {//表示当前的是可以插入值

m_t[i] = m[i];//放入一个值

knap(m, n+1,m_t,i+1);//放入其余的数

m_t[i] =0;//还原

}

}

}

}

}

@end

相关文章

  • 递归-7简单的0/1背包问题 去除相同的数

    // //ViewController.m //CocoTest_1 // //Created by S u p ...

  • 递归-5简单的0/1背包问题

    // //ViewController.m //CocoTest_1 // //Created by S u p ...

  • 递归算法:0/1背包问题

    1、环境配置: 系统:win10 编程语言:C++ 编译器:DevC++ 2、问题描述: 简单的0/1背包问题:设...

  • Algorithm进阶计划 -- 动态规划(下)

    经典动态规划背包问题最长子序列问题 1. 背包问题 1.1 0-1 背包问题 0-1 背包问题,描述如下: 上面...

  • 算法-动态规划-背包问题

    背包问题是基础的动态规划问题,包含了0-1背包,完全背包,多重背包等。 0-1背包 存在容量为 的背包 , 件体...

  • 背包问题

    背包问题属于典型的动态规划问题。这里我们将详细介绍0-1背包,完全背包和多重背包问题 一、 0-1背包 有N件物品...

  • Day 28 :0-1背包问题

    0-1 背包是一个经典的组合优化问题,其中的思想非常重要。今天我们以一个简单的例子,先来体会 0-1 背包问题。 ...

  • 0-1背包问题

    或许在做算法题的老手手里,0-1背包问题算不上什么难事。可以说是最简单的背包问题了。不过我之前还真没有写过0-1背...

  • 0,1背包问题

    背包问题是动态规划的一个经典例子,先介绍简单的0,1背包问题。 参考:http://www.acmerblog.c...

  • 0/1背包问题

    输出结果

网友评论

    本文标题:递归-7简单的0/1背包问题 去除相同的数

    本文链接:https://www.haomeiwen.com/subject/wvrjnttx.html