程序设计week12 必做题

程序设计思维与实践 Week11 作业 程序设计思维与实践 Week11 作业 A - 必做题11-1题目分析代码B - 必做题11-2分析代码C - 必做题11-3题目分析D - 必做题11-4题目分析E - 选做题11-1 东东与 ATM题目分析F - 选做题11-2 东东开车了题目题目分析 A - 必做题11-1 题目 题目地址 分析 简单的模拟题,只要在20年内模拟每一年的价格就可以 代码 #include<iostrea... 阅读详情

A - 必做题 - 1

在这里插入图片描述

Sample Input
5
1 3 2 3 3
11
1 1 1 1 1 5 5 5 5 5 5
7
1 1 1 1 1 1 1
Sample Output
3
5
1

解题思路

排序后,所有相同的数都挨在一起
记录当前数的个数,当个数大于(n+1)/2时输出
每个数只遍历一次,复杂度为On

代码实现

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int Max = 1e6+ 100;
int n;
int a[Max];
int flag;
int sum;

int main()
{
	while(scanf("%d",&n)!=EOF)
	{
		for(int i=0;i<n;i++)
		{
		//	cin>>a[i];
		scanf("%d",&a[i]);
		}
		sort(a,a+n);
		
		flag = a[0];
		sum=1;
		int m = (n+1)/2;
		
		for(int i=1;i<n;i++)
		{
			if(flag==a[i])
			sum++;
			else
			{
				sum=1;
				flag=a[i];
			}
			if(sum>=m)
			{
			//	cout<<a[i]<<endl;
			printf("%d\n",a[i]);
				break;
			}
		}
	}
	return 0;
}

B - 必做题 - 2

在这里插入图片描述

Sample Input
3 4 5
S....
.###.
.##..
###.#

#####
#####
##.##
##...

#####
#####
#.###
####E

1 3 3
S##
#E#
###

0 0 0

Sample Output
Escaped in 11 minute(s).
Trapped!

解题思路

三维数组的bfs
不能移动到有#的,和已经移动过了的地方
用bfs而不用dfs,因为dfs不能保证求出来的是最优解
步数和记忆化用vis记录
具体实现看代码

代码

#include<cstdio>
#include<queue>
#include<cstring>
#include<iostream>
using namespace std;
int l,r,c;
char a[35][35][35];    
int vis[35][35][35];
int res;
struct point{
	int _i,_j,_k; //层,行,列 
};

point start,end;   //记录起点和终点的位置
queue<point> q;

void ini();
void bfs();

int main()
{
	while(1)
	{
		scanf("%d%d%d",&l,&r,&c);
		if(l==0&&r==0&&c==0) return 0;
		for(int i=0;i<l;i++)
		{
			for(int j=0;j<r;j++)
			{
				for(int k=0;k<c;k++)
				{
					cin>>a[i][j][k];
					if(a[i][j][k]=='S')
					start._i=i,start._j=j,start._k=k;
					if(a[i][j][k]=='E')
					end._i=i,end._j=j,end._k=k;
				}
			}
		}
		bfs();
		if(vis[end._i][end._j][end._k]>1)  printf("Escaped in %d minute(s).\n",vis[end._i][end._j][end._k]-1);
		if(vis[end._i][end._j][end._k]<=1) printf("Trapped!\n");
		ini();
	}
	return 0;
}

void ini()  //初始化
{
	memset(a,0,sizeof(a));
	memset(vis,0,sizeof(vis));
	while(!q.empty()) q.pop();
}

void bfs()
{
	int i=start._i,j=start._j,k=start._k;
	vis[i][j][k] = 1;
	q.push(start);
	while(!q.empty())
	{
		point p=q.front(); 
		q.pop();
		if(p._i==end._i&&p._j==end._j&&p._k==end._k) return ;  //到达终点结束
		for(int qi=0;qi<6;qi++)  //上下左右前后 
		{
			point pt;
			if(qi==0)  //上 
			{
				if(p._i+1 < l && vis[p._i+1][p._j][p._k]==0 && a[p._i+1][p._j][p._k]!='#')
				{
					vis[p._i+1][p._j][p._k] = vis[p._i][p._j][p._k]+1;	
					pt._i = p._i+1,pt._j=p._j,pt._k=p._k;
					q.push(pt); 
					continue;
				}
				else continue;
			}		
			if(qi==1) //下
			{
				if(p._i-1 >= 0 && vis[p._i-1][p._j][p._k]==0 && a[p._i-1][p._j][p._k]!='#')
				{
					vis[p._i-1][p._j][p._k] = vis[p._i][p._j][p._k]+1;	
					pt._i = p._i-1,pt._j=p._j,pt._k=p._k;
					q.push(pt);
					continue; 
				}
				else continue;
			 }
			 if(qi==2) //右
			 {
			 	if(p._k+1 < c && vis[p._i][p._j][p._k+1]==0 && a[p._i][p._j][p._k+1]!='#')
				{
					vis[p._i][p._j][p._k+1] = vis[p._i][p._j][p._k]+1;	
					pt._i = p._i,pt._j=p._j,pt._k=p._k+1;
					q.push(pt);
					continue; 
				}
				else continue;
			 }
			 if(qi==3) //左 
			 {
			 	if(p._k-1 >= 0 && vis[p._i][p._j][p._k-1]==0 && a[p._i][p._j][p._k-1]!='#')
				{
					vis[p._i][p._j][p._k-1] = vis[p._i][p._j][p._k]+1;	
					pt._i = p._i,pt._j=p._j,pt._k=p._k-1;
					q.push(pt); 
					continue;
				}
				else continue;
			 }
			 if(qi==4) //前
			 {
			 	if(p._j-1 >= 0 && vis[p._i][p._j-1][p._k]==0 && a[p._i][p._j-1][p._k]!='#')
				{
					vis[p._i][p._j-1][p._k] = vis[p._i][p._j][p._k]+1;	
					pt._i = p._i,pt._j=p._j-1,pt._k=p._k;
					q.push(pt); 
					continue;
				}
				else continue;
			}
			if(qi==5) //后
			{
				if(p._j+1 < r && vis[p._i][p._j+1][p._k]==0 && a[p._i][p._j+1][p._k]!='#')
				{
					vis[p._i][p._j+1][p._k] = vis[p._i][p._j][p._k]+1;	
					pt._i = p._i,pt._j=p._j+1,pt._k=p._k;
					q.push(pt); 
					continue;
				}
				else continue;
			 }
		}
	}
	return ;	
}

C - 必做题 - 3

在这里插入图片描述

Sample Input
1 3 1 2 3
2 6 -1 4 -2 3 -2 3
Sample Output
6
8 
Hint
数据量很大,需要scanf读入和dp处理。

解题思路

动态规划问题
状态设置  dp[i][j] -----选了j的,分成i段的最大值 
状态转移方程  dp[i][j] = max(dp[i-1][j-1] ,dp[i-1][k]) + a[j]
解释: 状态是选择了j的,所以转移到 dp[i][j]必须要加上 a[j]

分为2种情况:
第一种,a[j]是连着a[j-1]的那一段的
第二种, a[j]是新开的一段,与a[k]有间隔
由上述2种状态转移过来

但是,数据量太大,会爆内存,所以要使用滚动数组
设置一个max1[] 记录上一次的结果
dp[]用来计算这一次的结果

从 i=1滚动到 m 结束,得到的就是分成m段的结果
max1[j-1]是不包括j-1,j-1之前的最大值

代码

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1e6+5;

int m,n;
int a[N];
int dp[N];
int max1[N];

int main()
{
	while(scanf("%d %d",&m,&n)!=EOF)
{
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	memset(dp,0,sizeof(dp));
	memset(max1,0,sizeof(max1));	
	int t;
	for(int i=1;i<=m;i++)  //从 分成1段 推到 分成 m段 
	{
		t = -1000000000;
		for(int j=i;j<=n;j++)  //第i次记录在max1中,使用在i+1里面 
		{
			dp[j] = max(dp[j-1],max1[j-1])+a[j];
			max1[j-1]=t;
			t=max(t,dp[j]);
		}
		
	}
	printf("%d\n",t);
}
	return 0;
}
不修改MMDetection源码使用自定义数据和模型 以目标检测为例,用非侵入式的模型和MMDetection数据的方法进行配置。也就是不改动MMDetection的任何源码或目录的条件下,使用自定义数据训练自定义模型。 阅读详情

相关推荐

RC电路(一):微分|积分

的取值不同,会导致输出波形和输入波形之间的关系也不同,由此也会产生不同的应用。输出为0,随着电容充满电,运放-输入端得到的分压为正最大值,可等效成一个电压源,且电压不可突变,此时电流反向为最大值,开始充电时的容抗为0,电压不可突变则电压差为0,运放。开始充电时的容抗为0,电压不可突变则电压差为0,运放。输入端得到的分压也不可突变,随着电容放完电,于是。,因电容上电压不能突变(来不及充电,相当于短路,由上分析可得积分运算电路中,输出为运放的负最大峰值,随着电容充满电,输出为运放的正最大峰值,随着电容放完电,

既有随处可栖的江湖,也有追风逐梦的骁勇! 1万+

【Week 12 作业】必做题

必做题1 题目描述 给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少? 输入格式 本题包含多组数据: 每组数据包含两行。 第一行一个数字N(1<=N<=999999) ,保证N为奇数。 第二行为N个用空格隔开的整数。 数据以EOF结束。 输出格式 对于每一组数据,你需要输出你找到的唯一的数。 输入样例 5 1 3 2 3 3 11 1 1 1 1 1 5 5 5 5 5 5 7 1 1 1 1 1 1 1 输出样例 3 5 1 代码 #include &l

应是天仙狂醉,乱把白云揉碎 972

从混乱到清晰:用QJsonObject重构你的Qt网络API数据解析层(避坑指南)

本文详细介绍了如何使用QJsonObject重构Qt网络API数据解析层,避免常见的JSON解析陷阱。通过安全解析模式、数据绑定和性能优化技巧,帮助开发者构建高效、健壮的解析逻辑,提升代码可维护性和可读性。特别适用于处理复杂嵌套的JSON响应数据场景。

weixin_29011667的博客 230

程序设计思维与实践 Week12 作业

1、必做题 - 1 给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少? Input 本题包含多组数据: 每组数据包含两行。 第一行一个数字N(1<=N<=999999) ,保证N为奇数。 第二行为N个用空格隔开的整数。 数据以EOF结束。 Output 对于每一组数据,你需要输出你找到的唯一的数。 Sample Input 5 1 3 2 3 3 11 1 1 1 1 1 5 5 5 5 5 5 7 1 1 1 1 1 1 1 Sample Output 3

ErHaH_H的博客 556

Spring Boot应用Docker化实战:从Dockerfile编写到镜像推送完整流程

本文详细介绍了将Spring Boot应用Docker化的完整实战流程。从环境准备、项目审视,到编写高效且安全的Dockerfile,重点讲解了多阶段构建、镜像层优化、Spring Boot分层JAR等核心技巧,并涵盖了镜像构建、验证、调试以及最终推送至仓库并集成CI/CD的最佳实践,帮助开发者构建生产级Docker镜像。

butter的博客 1023

直击高频编程考点:字符串知识及经典算法题总结

字符串相关基本练习题总结(最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等)

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

【Week12作业 C】必做题-3【动态规划】

题意: 东东每个学期都会去寝室接受扫楼的任务,并清点每个寝室的人数。 每个寝室里面有ai个人(1<=i<=n)。从第i到第j个宿舍一共有sum(i,j)=a[i]+…+a[j]个人 这让宿管阿姨非常开心,并且让东东扫楼m次,每一次数第i到第j个宿舍sum(i,j) 问题是要找到sum(i1, j1) + … + sum(im,jm)的最大值。且ix <= iy <=jx和ix <= jy <=jx的情况是不被允许的。也就是说m段都不能相交。 注:1 ≤ i ≤ n ≤ 1

xKuro的博客 522

CloudCompare 二次开发(9)——半径滤波

基于PCL对CloudCompare软件进行二次开发,实现的算法功能是半径滤波

点云侠的博客 1401

C程序设计Week12晚上练习

本周只进行一个程序, 以前的一个程序。

附子 1187

seurat v5更新及样本整合方法

1 Seurat 对象和 Assay 类发生了变化:支持更多种类的检测和数据类型,包括磁盘上的矩阵。引入了分层结构来存储数据,例如原始计数、标准化数据和 z 得分/方差稳定数据。可以使用 $ 访问器或 LayerData 函数来访问数据。现有的 Seurat v4 函数和工作流程仍可在 v5 中使用。2 整合工作流程发生了变化:简化了整合流程,提高了速度和内存效率。整合结果与 v4 工作流程略有不同,但用户仍可在 v5 中运行 v4 整合工作流程。

hx2024的博客 2686

SPI协议详解(图文并茂+超详细)

先说串口 因为之前写过一篇UART,通用串行异步通讯协议,UART的相关资料 因为UART没有时钟信号,无法控制何时发送数据,也无法保证双发按照完全相同的速度接收数据。因此,双方以不同的速度进行数据接收和发送,就会出现问题。 如果要解决这个问题,UART为每个字节添加额外的起始位和停止位,以帮助接收器在数据到达时进行同步; 双方还必须事先就传输速度达成共识(设置相同的波特率,例如每秒9600位)。 传输速率如果有微小差异不是问题,因为接收器会在每个字节的开头重新同步。相应的协议如下图所示; 如果您注意到

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 33万+

程序设计Week12 必做部分

A题 题目描述 给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少?Input 本题包含多组数据: 每组数据包含两行。 第一行一个数字N(1<=N<=999999) ,保证N为奇数。 第二行为N个用空格隔开的整数。 数据以EOF结束。 Output 对于每一组数据,你需要输出你找到的唯一的数。 Sample Input 5 1 3 2 3 3 11 1 1 1 1 1 5 5 5 5 5 5 7 1 1 1 1 1 1 1 Sample Output 3 5

AcceptedMaybe的博客 205

OpenClaw 源代码深度分析报告 &如何把企业自有的MCP server 工具集成到OpenClaw里? 怎样通过OpenAI 风格SDK 解析出来OpenClaw的全部的流式输出内容?

项目属性详情名称OpenClaw版本2026.3.2许可证MIT语言最低运行时包管理器pnpm主要仓库},// 注册工具// 工具实现},});// 注册命令" }),});},方面评价模块化设计⭐⭐⭐⭐⭐ 插件架构清晰,扩展性强协议设计⭐⭐⭐⭐⭐ WebSocket 协议完善,支持多种客户端多渠道支持⭐⭐⭐⭐⭐ 20+ 消息通道,覆盖主流平台安全机制⭐⭐⭐⭐ 配对认证、设备签名、权限控制完善本地优先⭐⭐⭐⭐⭐ 数据本地存储,用户完全控制项目属性详情名称OpenClaw版本。

AI天才研究院 938

程序设计思维 week12 作业A-C 必做题

题目 给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少? Input 本题包含多组数据: 每组数据包含两行。 第一行一个数字N(1<=N<=999999) ,保证N为奇数。 第二行为N个用空格隔开的整数。 数据以EOF结束。 Output 对于每一组数据,你需要输出你找到的唯一的数。 Sample Input 5 1 3 2 3 3 11 1 1 1 1 1 5 5 5 5 5 5 7 1 1 1 1 1 1 1 Sample Output 3 5 1

噗的博客 302

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

程序设计思维与实践 Week12 作业 A 必做题 - 1

题目描述: 给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少? input: 本题包含多组数据: 每组数据包含两行。 第一行一个数字N(1<=N<=999999) ,保证N为奇数。 第二行为N个用空格隔开的整数。 数据以EOF结束。 output: 对于每一组数据,你需要输出你找到的唯一的数。 思路: 用map来记录次数。因为答案是唯一的,所以当检查到次数符合题意时,记录下来之后输出即可。 #include<iostream>

cax1165 263

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

程序设计思维与实践 Week12 作业 B 必做题 - 2

题目描述: zjm被困在一个三维的空间中,现在要寻找最短路径逃生! 空间由立方体单位构成。 zjm每次向上下前后左右移动一个单位需要一分钟,且zjm不能对角线移动。 空间的四周封闭。zjm的目标是走到空间的出口。 是否存在逃出生天的可能性?如果存在,则需要多少时间? input: 输入第一行是一个数表示空间的数量。 每个空间的描述的第一行为L,R和C(皆不超过30)。 L表示空间的高度,R和C分别表示每层空间的行与列的大小。 随后L层,每层R行,每行C个字符。 每个字符表示空间的一个单元。'#'表示不

cax1165 292

程序设计思维与实践 Week12 作业 C 必做题 - 3

题目描述: 东东每个学期都会去寝室接受扫楼的任务,并清点每个寝室的人数。 每个寝室里面有ai个人(1<=i<=n)。从第i到第j个宿舍一共有sum(i,j)=a[i]+...+a[j]个人 这让宿管阿姨非常开心,并且让东东扫楼m次,每一次数第i到第j个宿舍sum(i,j) 问题是要找到sum(i1, j1) + ... + sum(im,jm)的最大值。且ix <= iy <=jx和ix <= jy <=jx的情况是不被允许的。也就是说m段都不能相交。 注:1 ≤ i

cax1165 546

程序设计思维与实践 Week12 作业A - 必做题 - 1

题意 给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少? Input 本题包含多组数据: 每组数据包含两行。 第一行一个数字N(1<=N<=999999) ,保证N为奇数。 第二行为N个用空格隔开的整数。 数据以EOF结束。 Output 对于每一组数据,你需要输出你找到的唯一的数。 Example Input 5 1 3 2 3 3 11 1 ...

qq_45337415的博客 291

程序设计思维与实践 Week12 作业B - 必做题 - 2

题意 zjm被困在一个三维的空间中,现在要寻找最短路径逃生! 空间由立方体单位构成。 zjm每次向上下前后左右移动一个单位需要一分钟,且zjm不能对角线移动。 空间的四周封闭。zjm的目标是走到空间的出口。 是否存在逃出生天的可能性?如果存在,则需要多少时间? Input 输入第一行是一个数表示空间的数量。 每个空间的描述的第一行为L,R和C(皆不超过30)。 L表示空间的高度,R和C分别表示每层...

qq_45337415的博客 326

程序设计思维与实践 Week12 作业C - 必做题 - 3

题意 东东每个学期都会去寝室接受扫楼的任务,并清点每个寝室的人数。 每个寝室里面有ai个人(1<=i<=n)。从第i到第j个宿舍一共有sum(i,j)=a[i]+…+a[j]个人 这让宿管阿姨非常开心,并且让东东扫楼m次,每一次数第i到第j个宿舍sum(i,j) 问题是要找到sum(i1, j1) + … + sum(im,jm)的最大值。且ix <= iy <=jx和ix <= jy <=jx的情况是不被允许的。也就是说m段都不能相交。 注:1 ≤ i ≤ n ≤ 1e

qq_45337415的博客 214

程序设计思维与实践 Week12 作业 必做题 B-zjm密室逃脱

题目链接:B-zjm密室逃脱 题目描述: zjm被困在一个三维的空间中,现在要寻找最短路径逃生! 空间由立方体单位构成。 zjm每次向上下前后左右移动一个单位需要一分钟,且zjm不能对角线移动。 空间的四周封闭。zjm的目标是走到空间的出口。 是否存在逃出生天的可能性?如果存在,则需要多少时间? Input: 输入第一行是一个数表示空间的数量。 每个空间的描述的第一行为L,R和C(皆不超过30)。 L表示空间的高度,R和C分别表示每层空间的行与列的大小。 随后L层,每层R行,每行C个字符。 每个字符表示空间

qq_43666020的博客 477

程序设计思维与实践 Week12 作业 必做题 C-东东扫寝室

题目链接:C-东东扫寝室 题目描述: 东东每个学期都会去寝室接受扫楼的任务,并清点每个寝室的人数。 每个寝室里面有ai个人(1<=i<=n)。从第i到第j个宿舍一共有sum(i,j)=a[i]+…+a[j]个人 这让宿管阿姨非常开心,并且让东东扫楼m次,每一次数第i到第j个宿舍sum(i,j) 问题是要找到sum(i1, j1) + … + sum(im,jm)的最大值。且ix <= iy <=jx和ix <= jy <=jx的情况是不被允许的。也就是说m段都不能相交。

qq_43666020的博客 324

程序设计思维与实践 Week12 作业 必做题 A-zjm找数

题目链接:A-zjm找数 题目描述: 给出n个数,zjm想找出出现至少(n+1)/2次的数, 现在需要你帮忙找出这个数是多少? Input: 本题包含多组数据: 每组数据包含两行。 第一行一个数字N(1<=N<=999999) ,保证N为奇数。 第二行为N个用空格隔开的整数。 数据以EOF结束。 Output: 对于每一组数据,你需要输出你找到的唯一的数。 Sample Input: 5 1 3 2 3 3 11 1 1 1 1 1 5 5 5 5 5 5 7 1 1 1 1 1 1 1 S

qq_43666020的博客 307

week12 作业C必做题3

必做题 - 3 东东每个学期都会去寝室接受扫楼的任务,并清点每个寝室的人数。 每个寝室里面有ai个人(1<=i<=n)。从第i到第j个宿舍一共有sum(i,j)=a[i]+…+a[j]个人 这让宿管阿姨非常开心,并且让东东扫楼m次,每一次数第i到第j个宿舍sum(i,j) 问题是要找到sum(i1, j1) + … + sum(im,jm)的最大值。且ix <= iy <=jx和ix <= jy <=jx的情况是不被允许的。也就是说m段都不能相交。 注:1 ≤ i ≤

qq_43738677的博客 511

SDU程序设计思维与实践作业Week11

SDU程序设计思维与实践作业Week11A题目题解C++代码B题目题解C++代码C题目题解C++代码 A 题目 input&&output Sample 题解 C++代码 B 题目 input&&output Sample 题解 C++代码 C 题目 input&&output Sample 题解 C++代码 ...

TIM__one的博客 822
上一篇: CSP-m3 程序设计
下一篇: week 13 程序设计 必做题
Hhhhhhhhh毅
博客等级 码龄7年 7粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值