java设计模式之装饰器模式的实现
二、编程实现一个咖啡售卖模块,咖啡店需要售卖各种各样的组合咖啡:
基本的黑咖啡,10元
加糖 2元
加冰 1元
加奶 3元
加巧克力 4元
而且每种添加料可以重复添加。最后显示示例为:加糖加冰加奶的黑咖啡 16元。
要求有界面,比如MFC的对话框。注意在运行时,是维护一个单向的对象链表。
2. 主要代码
package com.lh.system;
/**
* @author
* @version 1.0
* @date 2023/11/16 15:18
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
// 咖啡组件的抽象基类
interface CoffeeComponent {
int cost();
String getDescri
操作系统课后习题3.9.2复习题
3.9.2复习题
● 3.1什么是指令跟踪?(What is instruction tracking)
● 指令跟踪是指为该进程而执行的指令序列。(Instruction tracking refers to the sequence of instructions executed for the process.)
● 3.2哪些常见的事情会触发进程的创建(What common things trigger process creation)
● 新的批处理作业;交互登录;操作系统因为提供一项服务而创建;由现有的进程派生。(New batch job; Interactive login; The operating system is created because it provides a service; Derived from an existing process.)
● 3.3.对于图3.6中的进程模型,请简单定义每个状态。(For the process model in Figure 3.6, simply define each state.)
● 运行态
操作系统课后习题4.11.2
● (Table 3.5 lists the basic elements of a process control block in an operating system without threads. For multithreaded systems, which of these elements may belong to thread control blocks and which may belong to process control blocks?)表3.5列出了在一个没有线程的操作系统中进程控制块的基本元素。对于多线程系统,这些元素中哪些可能属于线程控制块,那些可能属于进程控制块?
● (Please list the reasons why mode switching between threads is less expensive than mode switching between processes.)请列出线程间的模式切换比进程间的模式切换开销更低的原因。
● (Contains less status information.)包含的状态信
操作系统大纲
● 操作系统概述
● 操作系统的基本概念
● 定义
操作系统大纲
● 操作系统概述
● 操作系统的基本概念
● 定义
● 是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件。
● 操作系统的目标和功能
● 方便
● 有效
● 扩展能力
● 操作系统运行环境
● 操作系统的运行机制
● 运行原理
● 高级语言编写代码--->及机器指令
● 程序运行的过程就是cpu执行指令的过程
● 内核
● 内核是操作系统最核心的部分
● 切换
● 内核态-->用户态
● 用户态-->内核态
● 有中断引起
● 中断和异常
● 中断的作用
● 让系统内核1强行夺回cpu的控制权
● cpu从用户态装换到内核态
● 中断的分类
● 内中断
● trap
● fault
● abort
● 外中断
西南交通大学云计算第一次实验
用source openrc admin admin登录到openstack云平台的控制端
用户与项目管理,包括用户/租户的管理关联配额设置等操作:
openstack project list查看当前系统中的项目
openstack project create 《自定义项目名称 》创建名为《自定义项目名称 》的项目:
使用openstack project list再次查看当前系统中的项目,发现项目《自定义项目名称 》存在,则创建成功
使用openstack quota show 《自定义项目名称 》查看《自定义项目名称 》项目配额:
修改项目配额:
此处,是后面补做,重新创建项目,项目id已经发生了变化,但操作过程未变,首先展示虚拟机配置,然后修改配额,一开始把项目名字当成项目id所以导致一直失败。
使用openstack user list查看当前用户列表
使用openstack user create 《自定义用户名称 》 –passwd 123456789创建用户《自定义用户名称 》
使用openstack user list再次查看当前用户列表,发现用户《自
西南交通大学-算法分析与设计-作业7-分支限界-旅行加油油钱问题-贪吃蛇走迷宫问题
少年,少奶奶交作业啦!
(2) 写出求解过程中的目标函数,限界函数以及约束函数。
(3) 画出样例输入时的解空间树以及搜索空间树,对应结点的变量定义以及搜索空间树上结点的值,并画出求解过程中堆的变化。
(4) 分析算法的时间复杂度。
(5) 用C/C++语言编程实现题目要求。
(6) 第(2)(3)(4)(5)部分以Word文档提交,不需要单独提交源程序。
题目1: 小李希望开车到全国各地旅游,他发现旅途中各个城市的汽油价格也不相同,显然如果能够采取合理的加油方式,将会节省整个旅途的费用。假设汽车开始时油箱为空,汽车每走一个单位的距离将耗费一个单位的汽油。请帮助小李找到一种最省钱的方式完成他的整个自驾游。
输入要求:
输入的第一行包含两个整数n (1 ≤ n ≤ 1000)和m(0 ≤ m ≤ 10000),分别表示城市的数量以及道路的数量。其后的一行包含n个整数,分别表示n个城市的汽油价格。其后的m行,每一行包含三个整数u,v,d,表示城市u,v之间的距离为d(1 ≤ d ≤ 100)。最后一行包含三个整数c( 1 ≤ c ≤ 100),s,e,分别表示油箱的容量
西南交通大学-作业6-回溯法和黑白格和数独.docx
(1) 采用回溯法实现下述题目要求。
(2) 写出求解过程中的目标函数,限界函数(如果有的话)以及约束函数。
(3) 任选一种语言C/C++编程实现题目要求。
(4) 画出样例输入时的解空间树以及搜索空间树,定义每个结点对应变量的含义以及搜索空间树上结点对应变量的值。
(5) 分析算法的时间复杂度。
(6) 分别以Word文档和pdf方式提交,并打包压缩后以.rar文件提交。
题目1:数独游戏是在9*9的方格中填放1~9的数字,要求每一行、每一列以及3*3的方格中的数字均不能相同,如下图所示。
1 4 3 6 2 8 5 7 9
5 7 2 1 3 9 4 6 8
9 8 6 7 5 4 2 3 1
3 9 1 5 4 2 7 8 6
4 6 8 9 1 7 3 5 2
7 2 5 8 6 3 9 1 4
2 3 7 4 8 1 6 9 5
6 1 9 2 7 5 8 4 3
8 5 4 3 9 6 1 2 7
现方格中某些数字为空缺(用0表示),希望你编写程序能够将空缺的数字补齐。
输入要求:
输入包含9行,每一行包含9个数字,对应每个方格中的数字,0表示该方格的数字为空。
输出要
西南交通大学-实验8.3预习报告-分支限界推箱子-少年该交作业啦.docx
少年该交作业啦
1. 给出采用分支限界法求解该问题时的目标函数,约束条件以及限界函数。
2. 给出采用分支限界法求解样例输入时的解空间树。
3. 分析采用分支限界法求解样例输入时的求解过程,堆结点的定义,堆结点的值以及堆中元素的变化过程。
4. 画出采用分支限界法求解样例输入时的搜索空间树。
5. 编写相应的程序。
6. 调试步骤(5)的程序,验证样例输入时程序执行过程中堆的变化过程是否与步骤(3)的分析结果-致。
7. 通过程序的求解过程,分析影响算法时间效率的主要因素有哪些?
(1) 给出采用分支限界法求解该问题时的目标函数,约束条件以及限界函数。
解:设node为当前搜索的节点,node定义如下:
struct node
{
int px, py; //箱子位置
int bx, by; //人位置
bool useful; //本节点是否有效
}; //无效条件:箱子越界、撞墙、节点重复
其中:
西南交通大学-算法分析与设计实验8.1和8.2.docx
哥,懂得都懂,就两个实验5-6个题吧
西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx西南交通大学-算法分析与设计实验8.1和8.2.docx
西南交通大学第四章-数据库作业.docx
一. 简答题(每小题5分,共60分)
1. SQL包括哪三个子语言?
数据定义子语言,数据操作子语言,数据控制子语言。
2. SQL的使用方式?
交互式和嵌入式即可以独立的交互式使用也可以和宿主语言结合起来一起使用。
3. SQL语言对数据库对象的定义使用哪三个SQL命令关键字?
Create,alter,drop。
4. 标准的SQL语言与实际数据库产品中的SQL数据库语言的关系?
绝大多数实际数据库产品并不完全支持标准SQL,SQL的某些功能在实际数据库产品中并未得到支撑。。
5. 利用alter table可以做哪些事?
对数据库中的表进行操作,对已有表进行列增加删除和修改,如改变表已有列的数据类型、大小、可空性。
6. Select查询有哪些子句?各子句的执行顺序?
From子句,where子句,group by子句,having子句,select子句,order by子句;
执行顺序:from->where->group by->having->->select->oeder by。
西南交通大学数据库关系数据库设计.docx-少年交作业啦
1. 关系模式可能存在的4个问题?导致关系模式存在异常的根本原因?
插入异常,删除异常,冗余,更新异常;
异常原因:由于将多个数据集合在一个关系模式中,使得关系模式中属性存在这样或那样复杂的依赖关系。一般一个关系中至少有一个或者多个候选键,其中之一为主键。主键值不能为空,却唯一决定其他属性值,候选键的值不能重复。在设计关系模式时,将各种有关联的实体即联系集集中于一个关系模式中,不仅造成关系结构冗余、包含的语义过多,也使得其中的数据依赖变得错综复杂,不可避免的要违背某个或多个限制,从而引起异常。
2. 数据依赖的分类?
最重要的有函数依赖、多值依赖、连接依赖。
3. 函数依赖的分类?
平凡函数依赖、非平凡函数依赖、完全函数依赖、部分函数依赖、传递函数依赖。
西南交通大学实验6.1分析
函数
首先轮询num字符串,放入栈中,如果找到更小的就把栈中元素置换出来,类似单调栈,不过这里是直接去掉,此处用用了一个while循环。
最难的就是0的处理,即数组首位不放0,但中间位置可以放0
定义一个接受数组ans有两种可能一是删除数组大于原数组,输出0,在return那有个三木运算符处理该情况不是则按照ans数组输出
时间复杂度:O(n),其中 n 为字符串的长度。尽管存在嵌套循环,但内部循环最多运行k 次。由于 0<k≤n,主循环的时间复杂度被限制在2n以内。对于主循环之外的逻辑,它们的时间复杂度是O(n),因此总时间复杂度为 O(n)。
西南交通大学-实验8.2预习报告,少年是时候交作业啦,附代码
1. 理解分支限界法的求解过程。
2. 分析分支限界法的时间复杂度,比较分支限界法算法与回溯法时间效率差异。
3. 学会如何利用分支限界法求解具体问题,了解动分支限界法的应用范围及在实际应用中的局限性。
2. 实验任务
1. 分析影响分支限界法程序运行时间的主要因素。
2. 设计实验,验证(1)中分析结果是否与实验结果一致。
3. 通过上机实验,绘制分支限界法和回溯法城市数量-运行时间关系曲线分析算法对程序运行时间的影响。
4. 撰写相应的实验报告,实验报告内容包括:实验目的、实验任务、实验环境、实验步骤、实验结果及其分析以及实验总结等部分内容。
西南交通大学作业五,少年是时候交作业啦。
题目1:某体育比赛在甲乙两队中进行,两队参赛的人数相同,要求所有队员必须参赛且只能参加一次比赛。每次比赛,甲乙双方各派出一人与对方进行比赛,总胜出人数最多的队将获得比赛最终的胜利。为了取得比赛的胜利,教练在比赛前需要进行相应的排兵布阵。教练在排兵布阵时,往往会参考双方队员以往的成绩,并给出一个综合性的评分,如果某队队员相比另一队队员的评分高,则获胜的机率就越高。
输入要求:输入的第一行包含一个整数n,表示甲乙双方出场的总人数。其后的2行,每行包含n个整数,分别表示甲乙两队各个队员的评分成绩。
输出要求:输出一个整数k,表示甲队最大可能赢得的场次。
样例输入:
3
92 83 71
95 87 74
样例输出:
2
(1)题目一贪心算法实现
对双方队伍进行排序,升序排序后,从甲乙头一个人一名一名的比,尽量减少代价,若最弱的人员可以打败对方最弱的人员,对方往后移,赢一局,否则输一局,拿甲的下一个人员和前面比输的对方的人员继续比,直到甲的人员全部比完,看能赢几场。
(2)题目一算法的求解思路
输入:输入的第一行包含一个整数n,表示甲乙双方出场的总人数。其后的2行,每行包含n个整数,分别表示甲
西南交通大学,回溯法,小孩搭积木,一个小孩手中有N块正方形的积木,他总是想不同的方法来搭建各种不同的楼梯。
1. 理解回溯法的求解过程。
2. 分析回溯法的时间复杂度,比较回溯法算法与其他算法的时间效率差异。
3. 学会如何利用回溯法求解具体问题,了解动回溯法的应用范围及在实际应用中的局限性
1. 写出采用回溯法求解.上述问题的目标函数,约束条件以及限界函数。
2. 画出采用回溯法在求解样例输入时的解空间树。
3. 画出采用回溯法求解样例输入时的搜索空间树。
4. 采用回溯法求解上述问题,写出算法的实现过程,简要分析算法的时间复杂度。
5. 编写程序求解上述问题。
6. 上机验证程序在样例输入时的执行过程是否与步骤(3)所得到的搜索空间树--致,写出程序调试过程中搜索空间树上每个结点的值,并与前面的结果进行比。
7. 撰写相应的实验报告,实验报告内容包括:实验目的、实验任务、实验环境、实验步骤、实验结果及其分析以及实验总结等部分内容。
写出采用回溯法求解上述问题的目标函数,约束条件以及限界函数。
设n为假设中已摆放的正方体积木块,N为小明摆放楼梯的积木数量,ans表示摆放的方案数,每摆放一块积木,则n值加1,因此目标函数为n=N,且在n=N时,对应的摆放方案数为ans++。
设chess[
西南交通大学-算法分析与设计实验7.2预习报告-旅行者问题-回溯法-动态规划
实验报告7.2预习报告
某旅行商希望从某城市出发经过一系列的城市最后再回到出发的城市。这些城市
之间均可直航,他希望只经过这些城市一次且旅行的总线路最短。设有n个城市,城
市的编号从1到n。
输入:
输入第一行为整数n,表示城市的数量。其后1行,有n(n-1)/2个整数,用空格
隔开,表示城市之间的距离。其中的第1个数表示城市1和城市2之间的距离,第2
个数表示城市1和城市3之间的距离,.,第n-1个数表示城市1和城市n之间的距
离,第n个数表示城市2和城市3之间的距离,.依次类推。城市i和城市j之间的
距离和城市j与城市i之间的距离相同。
输出:
输出1个整数,表示从城市1出发经过所有城市- -次最后回到城市1的最短路
径。
样例输入: (如图7-4所示)
5
4 8 6 5 3 2 10 8 7 3
样例输出:
21
!一
#include "stdafx. h"
#include "iostream"
using namespace std;
template <class Type>
class Traveling{
friend Type Tsp(int **,int[],
西南交通大学-算法分析与设计-6.3实验报告-贪心法的超简单调度器实现
输入任务序列和相同种类的冷却时间,计算总耗时
实验报告附带预习部分
1)贪心算法设计
给定一个字符数组表示CPU需要执行的任务序列,其中用英文大写字母表示26中不同种类的任务,任务执行顺序随意,并且每个任务可以在一个单位时间内完成,CPU在任意时间单位可以执行完一个任务或者待命。
用分块的思想,先字符哈希表统计出现次数最多的字符,记录为maxcnt,因此划分为maxcnt-1块值存入maxpart,相同的任务之间要有足够的冷却时间,所以每块有最小长度n+1存入partlen,接着把剩余字符依次放入每块的剩余位置,位置不够,插在块后,空余位置多了,则CPU将其处于待命状态,所以用时为alltime=tasksize+剩余时间。
(2)执行过程分析
输入:
6
A A A B B B
2
预计输出:
8
#include<iostream>
#include<vector>
using namespace std;
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define MAX_1 20
int leastInterval(char* tas
西南交通大学作业4-报告再不交就来不及了
包含促销购物和树变森林的动态规划一个序列由N个元素组成,现希望从该序列中挑选出至少F个连续的元素,使这些数的均值(挑选出的连续数之和/数的个数)最大。
输入要求:输入第1行包含两个整数N和F,其后的1行包含N个整数,表示该序列元素的个数。
输出要求:输出占1行,为对应的最大均值,精确到小数点后三位。
输入样例:
10 6
6 4 2 10 3 8 5 9 4 1
输出样例:
6.500
(1)动态规划算法求解
求平均值用二分法,将序列数组存入sum数组中,如果存在区间和大于0,平均值可更大,存在一定误差,再用cout.precision(3);//精确到小数点后三位,四舍五入保留三位小数
(2)算法的求解思路。
先假设一个平均值,让原序列a减去假设平均值生成一个新的序列b,b序列有正有负,将其前缀和存入sum数组中,区间[i,j]的和表示为sum[j]-sum[i],如果区间大于0,说明平均值可以取更大。
(3)C++程序
西南交通大学-算法分析与设计-实验5.4实验报告包含预习部分-求最大子序列-求最大子矩阵
又到了交报告的时候喽!交大的梦我的梦!
有一个二维矩阵,矩阵中元素有正也有负。定义子矩阵的和为其所有元素之和,最大子矩阵为子矩阵和值最大的子矩阵。
1. 理解动态规划算法的求解过程。
2. 分析动态规划算法的时间复杂度,比较动态规划算法与其他算法的效率差异。
3. 学会如何利用动态规划算法求解具体问题,了解动态规划算法的局限性。
1. 将矩阵的某一行看成一个序列,设计算法求该序列的最大子序列。
2. 将矩阵相邻两行对应列的元素相加形成一个新的序列,试分析该子序列中每-一个元素的含义,其最大子序列的含义。
3. 设计算法求解该问题,分析样例输入情况下算法的执行过程、主要变量的变化情况,并分析算法的复杂度。
算法如下:
int n, nums[100], d[100], m;
while (cin >> n)
{
for (int i = 1; i < n; i++)
{
cin >> nums[i];
}
m = d[0] = nums[0]; // 初始化第一个 d[0]
for (int i = 1; i < n; i++) // 遍历从第二数开始
西安交通大学--算法分析作业-实验5.2预习部分
西安交通大学-算法分析作业
动态规划算法时间复杂度分析比较
数据每次从上下左右查找能拓展的数值比当前位置小的最远节点的路径,而Vis把(i,j)搜索结果最长的结果存储起来,i,j递增每次继续向下搜索时,查看是否已经有其状态了,存在直接return,没有就正常搜索,所以这样树中的每个节点均只搜索一次。所以该算法时间复杂度为O(R*C)
用例:
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
西南交通大学-算法分析与设计-实验4.3实验报告包括预习部分
棋盘覆盖问题:在一个2"X2* (k≥0) 个方格组成的棋盘中,恰有一个方格与其他方格不同(图a),称该方格为特殊方格。棋盘覆盖问题要求用图b所示的4种不同形状的L型骨牌覆盖给定棋盘.上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖
算法伪代码描述:
算法:
ChessBoard(tr,tc,dr,dc,n);
全局变量:
tile = 1;//被覆盖的方格记号。
Board[n][n]=0;//标记棋盘被覆盖的方格。
输入:
tr,tc;//棋盘的左上角行号、列号。
dr,dc;//特殊方格行号、列号。
n;//棋盘尺寸n*n。
西南交通大学-算法分析与设计-实验3.3实验报告包含预习部分
1. 根据样例输入,采用穷举法求出一种总成本最小的分配方案,写出求解过程。
2. 编写程序,采用穷举法解决问题
3. 上机调试,验证你的求解过程是否正确,并设计新的测试用例,对程序进行进一步验证,写出验证过程。
4. 撰写实验报告,内容包括:实验目的、实验任务、实验环境、实验步骤、实验结果及其分析以及实验总结等部分内容
全排列问题
西南交通大学实验2.4实验报告
(1) 分析给定算法的时间复杂度
(2) 上机实验,绘制不同输入情况下的运行时间曲线,并与(1)中的分析结果进行比较。
(3) 撰写相应的实验报告,实验报告内容包括:实验目的、实验任务、
实验环境、实验步骤、实验结果及其分析以及实验总结等部分内容。
快速排序-西南交通大学作业
采用快速排序对某序列进行排序
编写快速排序算法对应的程序.并计算序列长度为n时算法的运行时间。要求将运行时间保存到文件中。文件分成两行,第1行为n的值,第2行为该算法的执行时间,以ms为单位。
#include<iostream>
#include <fstream>
#include <ctime>
clock_t start, stop;
//clock_t是clock()函数的返回类型
double duration;
//记录被测函数的运行时间,以毫秒为单位
using namespace std;
void Random(int* a, int n, int l, int r)//生成范围在l~r的随机数
{
srand(time(0)); //设置时间种子
for (int i = 0; i < n; i++) {
a[i] = rand() % (r - l + 1) + l;//生成区间r~l的随机数
}
}
分析下面的算法在样例输入情况面程序的执行过程及结果 输入:3 2
#.#
###求不同行不同列#
4.1.1 分析下面的算法在样例输入情况面程序的执行过程及结果
输入:3 2
#.#
###
.#.
输出:8
嘿嘿,你懂的
(1) 存入n=3,k=2
(2) 初始化char型数组chess[][]为0,初始化int型数组sign[]为0
(3) 输入n值不等于-1且k值不等于-1,程序继续运行
(4) 双重for循环,外层从1到3,内层从1到3输入#.####.#.分别存入chess[1][1], chess[1][2], chess[1][3], chess[2][1], chess[2][2], chess[2][3],chess[3][1],chess[3][2],chess[3][3]中
(5) 设置ans初值为0,调用函数dfs(1,2),传入参数x=1
求两圆相交部分的面积-西南交通大学-算法作业实验1.1
没错的话就是很普通的求两圆相交面积,不过有很详细的分析,没有的话,你跟我讲两句!
动态规划-作业-西南交通大学-实验5.4预习报告
做算法作业拉,是动态规划吗,是要求最大子序列和最大子矩阵和吗,没错,就是报告就是交这个