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

news2024/12/24 20:53:46

一、程序阅读并回答问题(共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博客

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

表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。

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

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

相关文章

C++网络编程——socket

在服务器中&#xff0c;需要建立一个socket套接字才能对外提供一个网络通信接口&#xff0c;在Linux系统中套接字仅是一个文件描述符&#xff0c;也就是一个int类型的值 socket概念 socket 的原意是“插座”&#xff0c;在计算机通信领域&#xff0c;socket 被翻译为“套接字…

HCIP-Datacom-ARST自选题库__BGP/MPLS IP VPN简答【3道题】

1.在BGP/MPLSIPVPN场景中&#xff0c;如果PE设备收到到达同一目的网络的多条路由时&#xff0c;将按照定的顺序选择最优路由。请将以下内容按照比较顺序进行排序。 2.在如图所示的BGP/MPLSIP VPN网络中&#xff0c;管理员准备通过Hub-Spoke组网实现H站点对VPM流量的集中管控&am…

1.2数学基础

向量运算 矩阵运算 比较基础就不记录了 MVP矩阵推导 1.讲为什么要有矩阵变换和不同的坐标空间 将3D物体转化到2D平面为各个空间的运用做准备 2.介绍各个空间的概念和含义 MVP矩阵代表什么&#xff1f; MVP矩阵分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。…

Pycharm中如何引入gitee?

1、在Pycharm中打开settings&#xff0c;找到plugins&#xff0c;搜索gitee&#xff0c;点击install&#xff0c;点击ok即可。 2、下载安装好后&#xff0c;选择VCS&#xff0c;找到Get from version Control。 3、通过ssh公钥方式登录&#xff0c;ssh公钥可以gitee上获取 4、…

跨境电商拓海新策略:智能小家电遇全球机遇与挑战

全球化与互联网普及背景下&#xff0c;跨境电商成为企业拓展海外市场的重要途径。智能小家电以其创新性和实用性&#xff0c;逐渐成为跨境电商热门品类。面对全球市场的机遇与挑战&#xff0c;跨境电商企业需要深思如何制定有效的拓海新策略。 首先&#xff0c;智能小家电在全球…

IC开发——VCS基本用法

1. 简介 VCS是编译型verilog仿真器&#xff0c;处理verilog的源码过程如下&#xff1a; VCS先将verilog/systemverilog文件转化为C文件&#xff0c;在linux下编译链接生成可执行文件&#xff0c;在linux下运行simv即可得到仿真结果。 VCS使用步骤&#xff0c;先编译verilog源…

HT46R002 贴片 SOP8 经济型AD型OTP MCU单片机芯片

HT46R002在智能家居中的具体应用案例可以包括以下几个方面&#xff1a; 1. 智能照明控制&#xff1a;可以用于控制LED灯的亮度和色温&#xff0c;甚至可以通过手机APP远程控制开关和调节灯光效果。 2. 环境监测&#xff1a;用于监测室内温度、湿度、空气质量等&#xff0c;当检…

【busybox记录】【shell指令】ln

目录 内容来源&#xff1a; 【GUN】【ln】指令介绍 【busybox】【ln】指令介绍 【linux】【ln】指令介绍 使用示例&#xff1a; 创建链接文件 - 链接文件&#xff08;默认 - 硬链接&#xff09; 创建链接文件 - 链接文件&#xff08;软链接&#xff09; 创建链接文件 -…

李廉洋:5.29黄金震荡,原油持续走高,今日美盘行情走势分析及策略。

黄金消息面分析&#xff1a;当前美国存在一个令人担忧且未被充分关注的问题&#xff1a;房地产行业低迷、高利率和抵押贷款利率、租金高涨以及美联储的紧缩政策构成了一个恶性循环。由于高房价和高抵押贷款利率&#xff0c;美国住房经济活动远低于两年前的水平。为了让该行业好…

Android ANR Trace日志阅读分析技巧

什么是Trace日志 Trace日志是指ANR目录下的一份txt文件 adb pull /data/anr/traces.txt Trace日志有什么用 分析应用ANR无响应的问题&#xff0c; Trace怎么用 Cmd line: com.xx ABI: arm Build type: optimized Zygote loaded classes3682 post zygote classes3750 Intern…

SpringSecurity6从入门到实战之引言和基本概念

SpringSecurity6从入门到实战之引言和基本概念 前言 在当今数字化时代&#xff0c;随着网络应用的日益普及&#xff0c;保护用户数据和系统安全变得至关重要。作为Java开发社区的中坚力量&#xff0c;Spring框架提供了一整套解决方案来构建企业级应用程序。然而&#xff0c;随…

Android 13 VSYNC重学习

Android 13 VSYNC重学习 引言 学无止境&#xff0c;一个字干就完事&#xff01; 源码参考基于Android 13 aosp&#xff01; 一. Android VSync模块开胃菜 在开始正式的分析之前&#xff0c;我们先简单对Android的Vsync模块简单介绍下,如下图所示&#xff0c;其中: HW_VSync是…

Dolphinscheduler不重启加载Oracle驱动

转载自刘茫茫看山 问题背景 某天我们的租户反馈数据库连接缺少必要的驱动&#xff0c;我们通过日志查看确实是缺少部分数据库的驱动&#xff0c;因为DolphinScheduler默认只带了Oracle和MySQL的驱动&#xff0c;并且需要将pom文件中的test模式去掉才可以在打包的时候引入。我…

C# 中 async 与 await 关键字详解

async 和 await 关键字的作用是使方法能够异步执行并等待异步操作的完成。&#xff08;最重要的一点是记住 “异步执行”与“等待异步操作完成”&#xff0c;不是等待主线程操作完成&#xff09; async 修饰符可将 方法、lambda 表达式或匿名方法指定为异步。 async 关键字用于…

一张图一个表——CSS选择器总结

CSS选择器总结&#xff1a; (这些表是一张图片^_^) 看底部 完整思维导图图片和表格的下载地址&#xff1a;https://download.csdn.net/download/denlnyyr/10597820

LeetCode 377.组合总和Ⅳ

这题是我蠢了&#xff0c;它说是组合数我就信了&#xff0c;言尽于此 class Solution { public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(2000,0);dp[0]1;for(int i0;i<target;i){for(int j0;j<nums.size();j){if(i>nums…

22.Volatile原理

文章目录 Volatile原理1.Volatile语义中的内存屏障1.1.volatile写操作的内存屏障1.1.1.StoreStore 屏障1.1.2.StoreLoad 屏障 1.2.volatile读操作的内存屏障1.2.1.LoadStore屏障1.2.2.LoadLoad屏障 2.volatile不具备原子性2.1.原理 Volatile原理 1.Volatile语义中的内存屏障 在…

定位器与PWM的LED控制

文章目录 一、STM32定时器二、脉宽调制pwm三、定时器控制led&#xff08;1&#xff09;实验内容&#xff08;2&#xff09;创建工程&#xff08;3&#xff09;Keli程序&#xff08;4&#xff09;观察波形图&#xff08;5&#xff09;实物连接图&#xff08;6&#xff09;实践效…

Python机器学习 Tensorflow + keras 实现CNN

一、实验目的 1. 了解SkLearn Tensorlow使用方法 2. 了解SkLearn keras使用方法 二、实验工具&#xff1a; 1. SkLearn 三、实验内容 &#xff08;贴上源码及结果&#xff09; 使用Tensorflow对半环形数据集分 #encoding:utf-8import numpy as npfrom sklearn.datasets i…

AI图书推荐:用ChatGPT和Python搭建AI应用来变现

《用ChatGPT和Python搭建AI应用来变现》&#xff08;Building AI Applications with ChatGPT API&#xff09;将ChatGPT API与Python结合使用&#xff0c;可以开启构建非凡AI应用的大门。通过利用这些API&#xff0c;你可以专注于应用逻辑和用户体验&#xff0c;而ChatGPT强大的…