算法----最大承载量下的最大价值问题

代码:

栈代码:(存储哪些是需要的价值物)

#pragma once
#include<stdio.h>
#define maxSize 100
typedef struct stack {int * base;int * top;
}stack;
bool init(stack & Stack) {//栈的初始化Stack.base = new int[maxSize];if (!Stack.base) {return false;}Stack.top = Stack.base;return true;
}
bool push(stack & Stack,int e) {//入栈if (Stack.top - Stack.base == maxSize) {//满栈,不能再插入return false;}*(Stack.top) = e;Stack.top++;return true;
}
bool pop(stack & Stack, int &e) {//出栈if (Stack.base == Stack.top) {//栈空return false;}Stack.top--;e = *(Stack.top);return true;
}
int getTop(stack &Stack) {if (Stack.base == Stack.top) {//栈空return -1;}return *(Stack.top - 1);
}
void printStack(stack Stack) {//遍历栈中的元素while (Stack.base != Stack.top) {printf("%d ", *(Stack.top - 1));Stack.top--;}
}
bool empty(stack Stack) {//栈空的判断if (Stack.base == Stack.top) {return true;}return false;
}
void testStack() {//测试栈是否有问题stack Stack;init(Stack);int value;while (1) {scanf_s("%d", &value);if (value == -1) {break;}push(Stack, value);}printStack(Stack);
}

核心代码:

#include<stdio.h>
#include<stdlib.h>
#include"stack.h"
int MaxValues = 0, tempValues = 0;//最大价值和每次递归从树根到叶子结点的最大价值
int tempWeight = 0, maxWeight;//本次从根节点到其中一个叶子结点的最大临时重量和人能承载的最大重量
int w[100],p[100];//每个宝贝物品的重量和价值
stack Stack24;
void backTrace(int h,int maxH) {//最大承载量下的最大价值if (h == maxH) {if (tempValues > MaxValues) {MaxValues = tempValues;int * v = Stack24.top;printStack(Stack24);Stack24.top = v;printf("\n");}return;}if (tempWeight + w[h] <= maxWeight) {tempWeight += w[h];tempValues += p[h];push(Stack24, h);backTrace(h + 1, maxH);tempWeight -= w[h];tempValues -= p[h];int e;pop(Stack24, e);}backTrace(h + 1, maxH);
}
int main() {init(Stack24);int n;scanf_s("%d%d", &maxWeight,&n);for (int i = 0; i < n; i++) {scanf_s("%d%d", &w[i],&p[i]);}backTrace(0, n);printf("最大承载量下的最大价值为:%d\n",MaxValues);system("pause");return 0;
}

测试截图:

时间复杂度O(n),空间复杂度O(1)

如果存在什么问题,欢迎批评指正!谢谢!

算法----最大承载量下的最大价值问题相关推荐

  1. 达观数据CTO纪达麒:小标注数据量下自然语言处理实战经验

    自然语言处理在文本信息抽取.自动审校.智能问答.情感分析等场景下都有非常多的实际应用需求,在人工智能领域里有极为广泛的应用场景.然而在实际工程应用中,最经常面临的挑战是我们往往很难有大量高质量的标注语 ...

  2. 一招教你解决大数据量下的各种报表使用问题

    在我们日常制作报表分析过程中,总会遇到各种问题.比如,报表底层数据日益增多.报表加载超慢,这些情况该怎么解决? 数据库是最常见的能处理大数据的计算方案,而永洪能利用数据库来完成数据计算.但是,有些报表 ...

  3. 现身说法:实际业务出发分析百亿数据量下的多表查询优化

    今天给大家带来的讨论主题是通过实战经验来对百亿数据量下的多表数据查询进行优化,俗话说的好,一切脱离业务的架构都是耍流氓,接下来我就整理一下今天早上微信群里石头哥给大家分享的百亿数据量多表查询架构以及优 ...

  4. 大数据量下高并发同步的讲解(不看,保证你后悔!)

    偶然的机会在网上看到了这篇blog,觉得作者写得挺不错的(虽然自己并没有怎么看懂...),所以就转来跟大家分享分享吧~~~ 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发 ...

  5. python比较两个列表的重合度_#源代码#超几何分布算法介绍及python下的实现代码...

    原标题:#源代码#超几何分布算法介绍及python下的实现代码 超几何分布是统计学上一种离散概率分布.它描述了由有限个物件中抽出n个物件,成功抽出指定种类的物件的次数(不归还). 在产品质量的不放回抽 ...

  6. 【报告分享】小红书·新消费浪潮下的决策价值之地-小红书(附下载)

    摘要:现在的小红书和几年前大家所认识的--一个女性用户为主的美妆社区有了很大的不同,小红书的男性用户正在飞速增长.此外,小红书年轻用户的集中度较高,90后用户达到70%:一二线城市的用户的占比达到50 ...

  7. 大数据量下水晶报表的实现及显示过程中的进度条显示讨论

    最近一段收到的反馈中,有几位是问到在应用程序中使用水晶报表时,大数据量情况下因为等待时间过长,给用户的感觉不好 所以想增加一个进度条,给用户一个比较直观的印象. 本文针对此问题而生,但是并没有一个像样 ...

  8. 大数据量下,身份证的查询优化

    大数据量下,身份证的查询优化 这里是测试练习采用select *,实际场景中还是使用所有字段的形式,这样也可以提高效率 方式一:身份证分别正向.逆向存储,使用like逆序模糊查询,满足最左匹配原则,索 ...

  9. 【趣学算法】第二章 算法之美(下)

    14天阅读挑战赛 [趣学算法]第二章 算法之美(下) 1. 一棋盘的麦子 1.1 题目描述 1.2 题目解析 1.3 爆炸增量函数 称上面的函数(1.2中的第一个函数)为爆炸增量函数. 爆炸函数也就是 ...

最新文章

  1. Locality Sensitive Hashing(局部敏感哈希)
  2. linux系统回收站功能的实现
  3. 一个简单的XML文档例子
  4. equals 和 hashCode 到底有什么联系?一文告诉你
  5. 反应速度测试软件,用批处理实现的反应速度测试工具
  6. You have unstaged changes.
  7. bootstrap table 列拖动变宽
  8. django项目连接远程数据库
  9. mysql group by top_Mysql group by top N的问题 | 学步园
  10. 5 questions
  11. newton版本linux,centos7.4下安装部署openstack newton版本 互联网技术圈 互联网技术圈...
  12. 计算机在工业工程中的应用,在工业工程中信息技术的应用原稿(全文完整版)...
  13. 白鸦:我印象中的Keso
  14. C语言推荐书籍从入门到进阶带你走上大牛之路
  15. pytest框架笔记(十三) : Pytest+Allure定制报告
  16. 会考计算机基本知识点总结,高中计算机会考基本知识点
  17. linux sudo命令全称,你知道Linux系统中的sudo 命令吗?
  18. IE浏览器打开闪退,自动切换MicrosoftEdge浏览器
  19. 爬虫笔记之——selenium安装与使用(1)
  20. REDIS哨兵【Sentinel】模式+哨兵的核心知识点+redis哨兵主从切换的数据丢失问题+上一章铺垫的【异步复制数据丢失问题】+【集群脑裂】

热门文章

  1. ubuntu环境下如何安装jdk,安装eclipse,安装android studio总结
  2. Android之的性能优化方法
  3. Android之开发中用到的几个多线程解析
  4. c语言创建新指针,如何用c语言创建一个指针
  5. python面向对象设计管理系统_python面向对象之单例设计模型
  6. python ctypes 指针_Python Ctypes传递.h文件中定义的结构指针。
  7. 如何巧妙拒绝老同学借钱?哈哈哈哈哈......
  8. 用高等数学“铲雪”!这个200多年前的证明太厉害了,有城市用它省了2000多万..........
  9. 你真的不了解这个地球
  10. java socket 多次write_java NIO2异步socket的write事件与read事件的完成次数不一致是怎么回事...