当前位置: 首页 > news >正文

【对算法期中卷子的解析和反思】

一、程序阅读并回答问题(共30分)

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. using namespace std;
  5. char chess[10][10];
  6. int sign[10];
  7. int n, k, ans;
  8. void dfs(int x, int k)
  9. {
  10.   if (k == 0){
  11. ans++;
  12. return;
  13.     }
  14.    if (x+k-1 > n)
  15. return;
  16.   for (int i = x; i <= n; i++)
  17.       for (int j = 1; j <= n; j++)
  18.   if (!sign[j] && chess[i][j] == '#'){
  19. sign[j] = 1;
  20. dfs(i + 1, k - 1);
  21. sign[j] = 0;
  22. }
  23.  }
  24. int main()
  25. {
  26.     while (cin >> n >> k){
  27. memset(chess, 0, sizeof(chess));
  28. memset(sign, 0, sizeof(sign));
  29. if (n == -1 || k == -1)
  30. break;
  31.        for (int i = 1; i <= n; i++)
  32. for (int j = 1; j <= n; j++)
  33. cin >> chess[i][j];
  34. ans = 0;
  35. dfs(1, k);
  36. cout << ans << endl;
  37.      }
  38.    return 0;
  39.  }

设程序的输入如下,请写出程序执行到35行时变量chess的值。(3分)

4 4

...#

..#.

.#..

#...

-1 -1

这里的坑点就是chess[][]的范围是[0-9][0-9],很多人没考虑多余的部分

chess[1][1]~Chess[1][4]的值分别为“.”,“.”,“.”,“#”。

chess[2][1]~Chess[2][4]的值分别为“.”,“.”,“#”,“.”。

chess[3][1]~Chess[3][4]的值分别为“.”,“#”,“.”,“.”。

chess[4][1]~chess[4][4]的值分别为“#”,“.”,“.”,“.”。

其余值为0。

分析函数dfs(.)的时间复杂度,写出分析求解过程。(12分)

这个时间复杂度也是,跟之前的答案出来的还不一样,逆天

以前这个,纯纯数学公式推出来的,啥初始条件都是浮云

你想想,右边是组合数,我们可以理解为n列中选K列,再粗略的n行选、n-1行选......左边也该是个阶乘来着......无语

现在这个

若采用问题(1)中的输入,分析该程序的求解过程。(15分)

这个跟老师之前出的类似题写的真不一样,服了。

我觉得我这个写的是对的

二、算法分析题 (共40分)

某班级的同学正在玩一个游戏。他们在某个时刻把一个物品摆放到跑道的某个位置,设跑道的长度为10米且是笔直的。游戏前他们会把每个物品的价格,物品出现的时间和位置告诉给玩游戏的同学。假设玩游戏的同学刚开始时站在跑道的某个位置,他每秒跑的距离不超过1米。当然他可以不跑,也可以朝前或者朝后跑。他每跑到一个位置便可以快速的拾取该物品,然后以同样的速度跑到下一个位置。请问,他最多能够获得的物品的总价格是多少?

输入:

输入数据的第一行包含两个正整数n(0<n<100)和m(0<=m<=10),其中n表示待摆放的物品的个数,m表示刚开始时玩游戏同学所在的位置;在接下来的n行中,每行有3个整数x, t(0<T< 100000)和p,表示在第t秒会在x位置上摆放一个价值为p的物品。同一时刻可能在同一位置摆放多个物品。

输出:

玩游戏的同学最多能够拾取的物品的总价格是多少?

样例输入:

  4 4

  2 1 1

  3 2 5

  5 3 1

  6 2 3

样例输出:

  5  

要求:

请写出采用穷举法求解该问题的伪代码,并画出样例输入时的解空间树。(10分)

我们的算法的起点都不一样,真不知道这咋整

请写出采用动态规划算法求解上述问题的伪代码,并用样例输入对其进行验证,写出求解过程。(20分)

也是算法不一样

【拾取问题】-CSDN博客

好吧,老师写的比我好,我需要递归,他不用,但是这个有点颠覆我的思维,我没看懂

行号

执行次数

i

j

dp[i][j]

mValue

6

1

0

1

0

0

6

2

0

2

0

0

6

3

0

3

0

0

6

5

1

2

0

0

4

15

4

3

5

0

10

1

-

-

-

5

我也可以给这个表格,但是定义都不一样,咋能指望一模一样

表3 动态规划求解结果(dp[i][j])

(j,i)

0

1

2

3

4

5

6

7

8

9

10

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

2

0

0

0

5

0

0

3

0

0

0

0

3

0

0

5

5

5

4

3

3

0

0

0

分析(1)中算法的时间复杂度,写出分析求解过程。(10分)

没看懂咋分析的

题(1)为三叉树,深度为lTime+1,因此T(0)=3T(1),T(lTime)=O(1),其时间复杂度为O(3lTime)。

三、算法设计及实现(共30分)

有一个2*n大小的矩形地板,用2*2和2*1大小的瓷砖方块来填满它。求一共有多少种不同的放法?如下所示:

输入:

    输入包含若干行,每一行包含一个整数n(0<=n<=250),表示矩形地板的长度。

输出:

    对于每一行的输出,输出一行整数,表示矩形地板的不同的摆放方法。

样例输入:

2

8

12

100

200

样例输出:

  3

171

2731

845100400152152934331135470251

1071292029505993517027974728227441735014801995855195223534251

要求:

当n=2时,画出不同的摆放方法。(5分)

三种,略

假设长度为n时摆放两种砖块的不同摆放方法有f(n)种。如果前面两块摆放2*2的砖块,则剩余的n-2块砖块摆放两种不同砖块的摆放方法有多少种?(5分)

这里竟然是把f[n]当作函数,估计是老师像让我们用动态规划做,所以提示,答案是f[n-2]

假设长度为n时摆放两种砖块的不同摆放方法有f(n)种。如果前面1块摆放2*1的砖块,则剩余的n-1块砖块摆放两种不同的砖块总共有多少种不同的摆放方法?(5分)

f[n-1]

按题目要求编写完整程序,并简要说明算法求解思想。(15分)

【地板拼接问题】-CSDN博客

该算法的求解思想:

假设地板长度为n,有f[n]种放置2*1和2*2砖块的方法。假设某一块放2*2,则有方法数f[n-2];假设某一块竖着放2*1,则有方法数f[n-1];假设某一块横着放2*1,则有方法数f[n-2],因此得出转移方程f[n] = 2 * f[n-2] + f[n-1]

于是将求解dp[n]的问题,转化为求解dp[n-1]和dp[n-2]的问题,从而不断分解为简单的子问题,直到分解为最小子问题dp[0]=1,dp[1]=1。

相关文章:

【对算法期中卷子的解析和反思】

一、程序阅读并回答问题&#xff08;共30分&#xff09; #include<cstdio>#include<cstring>#include<iostream>using namespace std;char chess[10][10];int sign[10];int n, k, ans;void dfs(int x, int k) { if (k 0){ans;return; } if (xk-1 >…...

sudo apt update sudo: apt: command not found

CentOS或RHEL&#xff08;Red Hat Enterprise Linux&#xff09;系统上&#xff0c;包管理器是yum或dnf&#xff0c;而不是apt。您可以使用yum或dnf来安装软件包。以下是如何在CentOS或RHEL上安装Git的详细步骤&#xff1a; 1. 使用yum安装Git 首先&#xff0c;更新软件包列表&…...

ios:文本框默认的copy、past改成中文复制粘贴

问题 ios 开发&#xff0c;对于输入框的一些默认文案展示&#xff0c;如复制粘贴是英文的&#xff0c;那么如何改为中文的呢 解决 按照路径找到这个文件 ios/项目/Info.plist&#xff0c;增加 <key>CFBundleAllowMixedLocalizations</key> <true/> <…...

Qt moc系统的黑魔法?

Qt的元对象系统&#xff08;Meta-Object System&#xff09;是Qt框架的核心功能之一&#xff0c;为C语言增加了一些动态特性&#xff0c;借助元对象系统Qt可以实现以下功能 信号与槽机制&#xff08;Signals and Slots&#xff09;运行时类型信息&#xff08;Run-Time Type In…...

MyBatis开发中常用总结

文章目录 常用MyBatis参数映射单个参数多个参数使用索引【不推荐】Param注解Map传参POJO【推荐】List数组 动态标签\<if>标签\<trim>标签\<where>标签\<set>标签\<foreach>标签 MyBatis查询一对一一对多 常用MyBatis参数映射 单个参数 XML中可…...

Git基本使用教程(学习记录)

参考文章链接&#xff1a; Git教程&#xff08;超详细&#xff0c;一文秒懂&#xff09; RUNOOB Git教程 Git学习记录 1Git概述 1.1版本控制软件功能 版本管理&#xff1a;更新或回退到历史上任何版本&#xff0c;数据备份共享代码&#xff1a;团队间共享代码&#xff0c;…...

【Linux-RTC】

Linux-RTC ■ rtc_device 结构体■ RTC 时间查看与设置■ 1、时间 RTC 查看■ 2、设置 RTC 时间 ■ rtc_device 结构体 Linux 内核将 RTC 设备抽象为 rtc_device 结构体 rtc_device 结构体&#xff0c;此结构体定义在 include/linux/rtc.h 文件中 ■ RTC 时间查看与设置 ■ 1…...

机器学习目录

文章目录 基本概念有监督学习回归问题分类问题 无监督学习聚类问题异常检测 基本概念 pass 有监督学习 回归问题 通过拟合函数&#xff0c;解决连续值的预测问题梯度下降法优化&#xff1b;最小二乘法求解&#xff1b;度量指标 均方误差&#xff1b;均方根误差&#xff1b;平…...

React开发环境配置详细讲解-04

环境简介 前端随着规范化&#xff0c;可以说规范和环境插件配置满天飞&#xff0c;笔者最早接触的是jquery&#xff0c;那个开发非常简单&#xff0c;只要引入jquery就可以了&#xff0c;当时还写了一套UI框架&#xff0c;至今在做小型项目中还在使用&#xff0c;show一张效果…...

Go 如何通过 Kafka 客户端库 生产与消费消息

文章目录 0.前置说明1. confluent-kafka-go2. sarama3. segmentio/kafka-go4. franz-go选择建议 1.启动 kafka 集群2.安装 confluent-kafka-go 库3.创建生产者特殊文件说明如何查看.log文件内容 4.创建消费者 0.前置说明 Go 语言中有一些流行的 Kafka 客户端库。以下是几个常用…...

【设计模式深度剖析】【B】【结构型】【对比】| 主要区别包装的不同

&#x1f448;️上一篇:享元模式 回 顾&#xff1a;结构型设计模式 1.代理模式&#x1f448;️ 2.装饰器模式&#x1f448;️ 3.适配器模式&#x1f448;️ 4.组合模式&#x1f448;️ 5.桥接模式&#x1f448;️ 6.外观模式&#x1f448;️ 7.享元模式&#x…...

信息学奥赛初赛天天练-17-阅读理解-浮点数精准输出与海伦公式的巧妙应用

PDF文档公众号回复关键字:20240531 1 2023 CSP-J 阅读程序1 阅读程序&#xff08;程序输入不超过数组成字符串定义的范围&#xff1a;判断题正确填√&#xff0c;错误填&#xff1b;除特殊说明外&#xff0c;判断题1.5分&#xff0c;选择题3分&#xff0c;共计40分&#xff0…...

mysql - 为什么MySQL不建议使用NULL作为列默认值?

为什么MySQL不建议使用NULL作为列默认值&#xff1f; InnoDB有4中行格式&#xff1a; Redundant : 非紧凑格式,5.0 版本之前用的行格式,目前很少使用,Compact : 紧凑格式,5.1 版本之后默认行格式,可以存储更多的数据Dynamic , Compressed : 和Compact类似,5.7 版本之后默认使…...

数据分析案例-在线食品订单数据可视化分析与建模分类

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

构建LangChain应用程序的示例代码:2、使用LangChain库实现的AutoGPT示例:查找马拉松获胜成绩

AutoGPT 示例&#xff1a;查找马拉松获胜成绩 实现 https://github.com/Significant-Gravitas/Auto-GPT&#xff0c;使用LangChain基础组件&#xff08;大型语言模型(LLMs)、提示模板(PromptTemplates)、向量存储(VectorStores)、嵌入(Embeddings)、工具(Tools)&#xff09;。…...

代码随想录算法训练营第三十四 |● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

今天的解析写在了代码注释中 1005.K次取反后最大化的数组和 讲解链接&#xff1a;https://programmercarl.com/1005.K%E6%AC%A1%E5%8F%96%E5%8F%8D%E5%90%8E%E6%9C%80%E5%A4%A7%E5%8C%96%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.html class Solution { public:static bool cmp(i…...

GB-T 43206-2023 信息安全技术 信息系统密码应用测评要求

GB-T 43206-2023 信息安全技术 信息系统密码应用测评要求 编写背景 随着信息技术的飞速发展&#xff0c;信息系统在社会经济活动中扮演着越来越重要的角色。信息安全问题也随之成为社会关注的焦点。GB-T 43206-2023《信息安全技术 信息系统密码应用测评要求》是针对信息系统中…...

线程进阶-1 线程池

一.说一下线程池的执行原理 1.线程池的七大核心参数 &#xff08;1&#xff09;int corePoolSize&#xff1a;核心线程数。默认情况下核心线程会一直存活&#xff0c;当设置allowCoreThreadTimeout为true时&#xff0c;核心线程也会被超时回收。 &#xff08;2&#xff09;i…...

LabVIEW中PID控制器系统的噪声与扰动抑制策略

在LabVIEW中处理PID控制器系统中的噪声和外部扰动&#xff0c;需要从信号处理、控制算法优化、硬件滤波和系统设计四个角度入手。采用滤波技术、调节PID参数、增加前馈控制和实施硬件滤波器等方法&#xff0c;可以有效减少噪声和扰动对系统性能的影响&#xff0c;提高控制系统的…...

JavaWeb笔记整理+图解——Listener监听器

欢迎大家来到这一篇章——Listener监听器 监听器和过滤器都是JavaWeb服务器三大组件&#xff08;Servlet、监听器、过滤器&#xff09;之一&#xff0c;他们对于Web开发起到了不可缺少的作用。 ps&#xff1a;想要补充Java知识的同学们可以移步我已经完结的JavaSE笔记&#x…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

二叉树-144.二叉树的前序遍历-力扣(LeetCode)

一、题目解析 对于递归方法的前序遍历十分简单&#xff0c;但对于一位合格的程序猿而言&#xff0c;需要掌握将递归转化为非递归的能力&#xff0c;毕竟递归调用的时候会调用大量的栈帧&#xff0c;存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧&#xff0c;而非…...

[特殊字符] Spring Boot底层原理深度解析与高级面试题精析

一、Spring Boot底层原理详解 Spring Boot的核心设计哲学是约定优于配置和自动装配&#xff0c;通过简化传统Spring应用的初始化和配置流程&#xff0c;显著提升开发效率。其底层原理可拆解为以下核心机制&#xff1a; 自动装配&#xff08;Auto-Configuration&#xff09; 核…...