2019年下半年软件设计师下午试题

news2024/10/6 22:22:07

【试题四】0-1背包问题

阅读下列说明和C代码,回答问题1至问题3。

【说明】

0-1背包问题定义为:给定i个物品的价值v[1…i]、小重量w[1...i]和背包容量T,每个物品装到背包里或者不装到背包里。求最优的装包方案,使得所得到的价值最大。

0-1背包问题具有最优子结构性质。定义c[i][T]为最优装包方案所获得的最大价值,则可得到如下所示的递归式。

【c代码】

下面是算法的C语言实现。

(1)常量和变量说明

T: 背包容量

v[]:价值数组

w[]:重量数组

c[][]:c[i][j]表示前i个物品在背包容量为j的情况下最优装包方案所能获得的最大价值

(2) C程序

#include <stdio.h>
#include <math.h>
#define N 6
#define maxT 1000

/*
变量说明
T:背包容量 
v[]:价值数组 
w[]:重量数组 
c[][]:c[i][j]表示前i个物品在背包容量为j的情况下最优装包方案所能获得的最大价值 
*/

int c[N][maxT]={0};
 
int Memoized_Knapsack(int v[N],int w[N],int T) {
    int i;
    int j;
    for(i=0; i<N; j++){
        for(j=0; j<=T; j++){
            c[i][f]= -1;
        }
    }
    return Calculate_Max_Value(v, w, N-1, T);
}
 
int Calculate_Max_Value(int v[N],int w[N], int i, int j){
    int temp =0;
    if (c[i][j]!=-1){
        return c[i][j];//填空1
    }
    if (i==0||j==0){
        c[i][j]=0;
    }else{
        c[i][j]=Calculate_Max_Value(v, w, i-1, j);
        if(temp<c[i][j]){//填空2
            temp=c[i][j];//填空3
            if(c[i][j]<temp){
                c[i][j]=temp;//填空4
            }
        }
    }
    return c [i][j];
}

【问题1】(8分)

根据说明和C代码,填充C代码中的空(1) ~ (4)。

【问题2 】(4分)

根据说明和C代码,算法采用了 (5) 设计策略。在求解过程中,采用了(6)

(自底向上或者自顶向下)的方式。

【问题3】  (3分)

若5项物品的价值数组和重量数组分别为v[]= {0,1,6,18,22,28}和w[]= {0,1,2,5,6,7}背包容量为T= 11,则获得的最大价值为 (7) 。

【试题五】文件管理系统(Java)

阅读下列说明和Java代码,将应填入(n) 处的字句写在答题纸的对应栏内。

【说明】

某文件管理系统中定义了类OfficeDoe和DocExplorer。当类OfficeDoe发生变化时,类DocExplorer的所有对象都要更新其自身的状态。现采用观察者(Observer) 设计模式来实现该需求,所设计的类图如图6-1所示。

 【Java代码】

package test_2019_2;

import java.util.*;

interface Observer{
    public void update(); //填空1
}

interface Subject{
    public void Attach(Observer obs);
    public void Detach(Observer obs);
    public void Notify();
    public void setStatus(int staus);
    public int getStatus();
}

class OfficeDoc implements Subject{
    private List<Observer> myObs;//填空2
    private String mySubjectName;
    private int m_status;

    public OfficeDoc (String name){
        mySubjectName=name;
        this.myObs=new ArrayList<Observer>();
        m_status=0;
    }
    public void Attach(Observer obs){this.myObs.add(obs);}
    public void Detach(Observer obs){this.myObs.remove(obs);}
    public void Notify(){
        for(Observer obs:this.myObs){
            obs.update();//填空3
        }
    }
    public void setStatus(int status){
        m_status=status;
        System.out.println("SetStatus Subject["+mySubjectName+"]status:"+status);
    }
    public int getStatus(){return m_status;}
}
class DocExplorer implements Observer {
    private String myObsName;

    public DocExplorer(String name, Subject sub) {//填空4
        myObsName = name;
        sub.Attach(this);//填空5
    }

    public void update() {
        System.out.println("update observer[" + myObsName + "]");
    }
}

public class ObserverTest {
    public static void main(String[] args) {
        System.out.println("Hello Wprld!");
        Subject subjectA=new Subject() {
            @Override
            public void Attach(Observer obs) {

            }

            @Override
            public void Detach(Observer obs) {

            }

            @Override
            public void Notify() {

            }

            @Override
            public void setStatus(int staus) {

            }

            @Override
            public int getStatus() {
                return 0;
            }
        };
        Observer observerA = new DocExplorer("observerA",subjectA);
        subjectA.setStatus(1);
        subjectA.Notify();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序进制换算

进制数介绍 一、进制介绍 二进制 &#xff1a;0或1&#xff0c;满2进1&#xff0c;以0B或者0b开头&#xff0c;如 0b1101 八进制&#xff1a;0-7&#xff0c;满8进1&#xff0c;&#xff0c;以0开头&#xff0c;如0234 十进制&#xff1a;0-9&#xff0c;满10进1&#xff0c;…

MVC分部视图的使用:Html.Partial/RenderPartial,Html.Action/RenderAction,RenderPage

ASP.NET MVC 里的部分视图&#xff0c;相当于 Web Form 里的 User Control。我们的页面往往会有许多重用的地方&#xff0c;可以进行封装重用。 使用部分视图有以下优点&#xff1a; 1. 可以简写代码。 2. 页面代码更加清晰、更好维护。 在视图里有多种方法可以 加载部分视图&a…

运营-10.算法分发

定义&#xff1a; 通过对信息的自动过滤和分流&#xff0c;从而实现对不同用户的个性化推荐 算法分发三要素 算法的前提 算法分发的前提&#xff1a;了解用户的喜好&#xff0c;给用户做画像。 用户画像是根据用户 基本属性 、 社会属性 、 行为属性 和 消费属性 等真实数 据信…

流式作业如何保证真正的精准一次消费

checkpoint 两阶段提交和WAL 真的是神&#xff01;&#xff01;&#xff01;&#xff01; 彻底解决了重复消费问题!! 状态一致性 当在分布式系统中引入状态时&#xff0c;自然也引入了一致性问题。一致性实际上是"正确性级别"的另一种说法&#xff0c;也就是说在成功…

【美化命令行教程】

目录 下载字体打开Teminal设置 美化powershell注意&#xff1a;主题路径powershell 自动提示看效果 美化git看效果 下载字体 防止乱码一定要下载下面的字体并安装 下载作者推荐MesloLGM NF字体&#xff0c;点此下载 打开Teminal设置 修改Teminal配置文件json "font&q…

数组存储与指针学习笔记(二)枚举类型、常量与变量

嵌入式C语言学习进阶系列文章 GUN C编译器拓展语法学习笔记(一&#xff09;GNU C特殊语法部分详解 GUN C编译器拓展语法学习笔记(二&#xff09;属性声明 GUN C编译器拓展语法学习笔记(三&#xff09;内联函数、内建函数与可变参数宏 数组存储与指针学习笔记(一&#xff09;数…

听劝 千万不要盲目自学网络安全

听劝 不要什么盲目的学网络安全。 一&#xff0c;怎么入门&#xff1f; 1、Web 安全相关概念&#xff08;2 周&#xff09; 了解网络安全相关法律法规 熟悉基本概念&#xff08;SQL 注入、上传、XSS、CSRF、一句话木马等&#xff09;。 通过关键字&#xff08;SQL 注入、…

人工智能简历-计算机视觉简历

前言 很多粉丝私我&#xff0c;说面试的事情。 这玩意我不理解&#xff0c;因为如果是计算机科班出身&#xff0c;计算机行业我觉得闭着眼睛找。 简历这玩意我真不会。。。 分享2个东西给大家。 第一个是 出国/在国外找实习/外企的英文简历。 比较流行的是一页。 第二个…

高速动车组全谱系图解

很多人认为中国高速铁路起源于2004年以来的技术引进&#xff0c;却不知道中国第一条高铁是1999年开工、2003年建成的秦沈客专&#xff1b;动车组的研制则更早&#xff0c;“蓝箭”、“中原之星”、“中华之星”都是鼎鼎大名。毫无疑问&#xff0c;2004年以来的引进技术&#xf…

SPI配置

I/O配置 主输出、从输入&#xff08;MOSI&#xff09; 主出从入&#xff08;MOSI &#xff09;引脚是主器件的输出和从器件的输入&#xff0c;用于主器件到从器件的串行数据传输。当SPI 配置为主器件时&#xff0c;该引脚为输出&#xff0c;当 SPI 配置为从器件时&#xff0c;该…

【原创】免费,不限量,使用OpenAI ChatGPT方法大揭秘

文章目录 微软的Edge浏览器集成WeTab插件就可以免费使用ChatGPT1、安装最新版的Edge浏览器2、选中浏览器的配置中的扩展3、在启动新页时&#xff0c;就可以看到chatGPT了4、这就可以免费使用chatGPT啦 微软的Edge浏览器集成WeTab插件就可以免费使用ChatGPT 1、安装最新版的Edg…

零信任网络安全

什么是零信任 零信任是一种安全思维方式&#xff0c;表示组织不应自动信任其边界内外的任何内容。在授予访问权限之前&#xff0c;必须验证任何尝试连接的实体。零信任安全策略围绕最低特权访问控制和严格的用户身份验证&#xff0c;因为假设不信任任何人。 若要实现这些原则…

4年外包终于上岸,我只能说别去....

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司&#xff0c;一干就是4年。现在终于跳槽到了互联网公司了&#xff0c;我想说的是&#xff0c;但凡有点机会&#xff0c;千万…

你不知道的自动化?使用自动化测试在项目中创造高业务价值...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 脱离数据支撑谈价…

WPF中嵌入web网页控件 WebBrowser

1 WebBrowser特点 <font colorblue>WebBrowser控件内部使用IE的引擎&#xff0c;因此使用WebBrowser我们必须安装IE浏览器。 WebBrowser使用的是IE内核&#xff0c;许多H5新特性都不支持&#xff0c;然后使用谷歌内核和火狐内核会使软件的体积增加至几十MB。 <font c…

《MySQL 必知必会》课程笔记(二)

这么多字段类型&#xff0c;该怎么定义&#xff1f; MySQL 中有很多字段类型&#xff0c;比如整数、文本、浮点数等。如果类型定义合理&#xff0c;就能节省存储空间&#xff0c;提升数据查询和处理的速度。相反&#xff0c;如果数据类型定义不合理&#xff0c;就有可能会导致…

详细版易学版TypeScript - 元组和枚举详解

一、元组(Tuple) 数组:合并了相同类型的对象 const myArr: Array<number> [1, 2, 3]; 元组(Tuple):合并了不同类型的对象 // 定义元组时就要确定好数据的类型&#xff0c;并一一对应 const tuple: [number, string] [12, "hi"]; // 添加内容时&#xff0c;不…

【Shiro】SimpleAuthorizationInfo如何授权

一、前言 本文基于上一篇文章进行介绍【Shiro】SimpleAuthenticationInfo如何验证password。 二、自定义的ShiroRealm类 经过上一篇文章的探求&#xff0c;这回直接找准doGetAuthorizationInfo方法&#xff1b;我们回过头看下ShiroRealm&#xff0c;它继承了AuthorizingRealm…

Hbase入门篇01---基本概念和部署教程

Hbase入门篇01---基本概念和部署教程 HBase基本概念HadoopHadoop的局限 HBase 与 NoSQLHBase应用场景发展历程HBase特点 RDBMS与HBase的对比关系型数据库HBaseHDFS对比HBaseHive对比Hbase总结Hive与HBase HBase集群搭建HBASE_MANAGES_ZK属性的作用安装报错&#xff0c;解决思路…

面试被问到了解哪些开发模型?看这一篇就够了

前言 软件开发模型是指软件开发全部过程、活动和任务的结构框架。一般包括需求、设计、编码和测试等阶段&#xff0c;甚至包括维护阶段。软件开发模型明确规定了软件开发过程中要完成的主要活动和任务&#xff0c;用来指导整个开发过程中的工作。对于不同的系统&#xff0c;可…