CCFCSP试题编号:201803-2试题名称:碰撞的小球

news2024/11/15 15:58:02

 一、题目描述

 二、思路

1.首先妾身分析这个题目,想要解题,得得解决2个问题。

1)判断小球到达端点或碰撞然后改变方向;

2)每时刻都要改变位置

两个问题都比较好解决,1)只要简单判断坐标,符合条件就将速度加个负号就成了,2)只要知道原来坐标+速度✖时间=新坐标就好了。因为每个时刻都有可能碰撞,每一秒都判断就好了。

三、代码

话不多说,来看妾身的代码呀!

#include <iostream>
using namespace std;

struct ball
{
	int position;//小球的位置
	int v;//速度的方向
}b[105];

void changePositionV(struct ball b[], int n, int L)
{
	int i, j;
	//到达左右端点就改变方向
	for (i = 0; i < n; i++)
	{
		if (b[i].position == 0 || b[i].position == L)
		{
			b[i].v = -b[i].v;
		}
	}
	//到达同一位置,小球碰撞,方向改变
	for (i = 0; i < n-1; i++)
	{
		for (j = i + 1; j < n; j++)
		{
			if (b[i].position == b[j].position)
			{
				b[i].v = -b[i].v;
				b[j].v = -b[j].v;
			}
			
		}
	}
	//更新位置
	for (i = 0; i < n; i++)
	{
		b[i].position += b[i].v;
	}
}
int main()
{
	int n, L, t;
	cin >> n >> L >> t;
	int i;
	//输入初始位置,并初始化速度方向
	for (i = 0; i < n; i++)
	{
		cin >> b[i].position;
		b[i].v = 1;
	}
	while (t)
	{
		changePositionV(b, n, L);
		t--;
	}
    //输出结果
	for (i = 0; i < n; i++)
	{
		cout << b[i].position << " ";
	}
	return 0;
}

四、思考总结

妾身还想了一下,觉得先更新位置,再判断是否碰撞也是可以的,也就是将函数改成如下:

//先更新位置,再判断是否碰撞
void changePositionV(struct ball b[], int n, int L)
{
	int i, j;
	//更新位置
	for (i = 0; i < n; i++)
	{
		b[i].position += b[i].v;
	}

	//到达左右端点就改变方向
	for (i = 0; i < n; i++)
	{
		if (b[i].position == 0 || b[i].position == L)
		{
			b[i].v = -b[i].v;
		}
	}
	//到达同一位置,小球碰撞,方向改变
	for (i = 0; i < n-1; i++)
	{
		for (j = i + 1; j < n; j++)
		{
			if (b[i].position == b[j].position)
			{
				b[i].v = -b[i].v;
				b[j].v = -b[j].v;
			}
			
		}
	}
}

小女子感觉自己的思路还比较中规中矩,应该还有更高效的解决方法,诶呀!希望以后能越来越棒!各位公子有没有更好的方法呀,可以教教妾身呀!

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

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

相关文章

【每日一题】2216.美化数组的最少删除数-2023.11.21

题目&#xff1a; 2216. 美化数组的最少删除数 给你一个下标从 0 开始的整数数组 nums &#xff0c;如果满足下述条件&#xff0c;则认为数组 nums 是一个 美丽数组 &#xff1a; nums.length 为偶数对所有满足 i % 2 0 的下标 i &#xff0c;nums[i] ! nums[i 1] 均成立 …

黑马点评-10实现用户点赞和点赞排行榜功能

用户点赞功能 如果用户只要点赞一次就对数据库中blog表中的liked字段的值加1就会导致一个用户无限点赞 PutMapping("/like/{id}") public Result likeBlog(PathVariable("id") Long id) {// 修改点赞数量,update tb_blog set liked liked 1 where id …

【前端】必学知识ES6 1小时学会

1.ES6概述 2.let和const的认识 3.let、const、var的区别 4.模板字符串 5.函数默认参数 6.箭头函数【重点】 ​编辑7.对象初始化简写以及案例分析 【重点】 8.对象解构 8.对象传播操作符 9.对象传播操作符案例分析 ​编辑 10.数组Map 11.数组Reduce 12.NodeJS小结 …

C++设计模式之工厂模式(下)——抽象工厂模式

抽象工厂模式 介绍示例示例使用运行结果抽象工厂模式的优缺点优点缺点 总结 介绍 抽象工厂模式是一种创建型设计模式&#xff0c;它提供了一种封装一组相关或相互依赖对象的方式&#xff0c;而无需指定它们具体的类。它允许客户端使用抽象接口来创建一系列相关的对象&#xff…

稻谷飘香金融助力——建行江门市分行助力乡村振兴

7月的台山&#xff0c;稻谷飘香。在大耕户李胜业的农田里&#xff0c;金灿灿的稻谷翻起层层稻浪&#xff0c;收割机在稻浪里来回穿梭&#xff0c;割稻、脱粒、装车等工序一气呵成。空气中弥漫着丰收的喜悦。 夏粮迎丰收的背后&#xff0c;是中国建设银行江门市分行&#xff08…

GCANet_Gated context aggregation network for image dehazing and deraining

2019、中科大港科、有代码 Chen D, He M, Fan Q, et al. Gated context aggregation network for image dehazing and deraining[C]//2019 IEEE winter conference on applications of computer vision (WACV). IEEE, 2019: 1375-1383. GitHub - cddlyf/GCANet: Implementation…

延时任务定时发布,基于 Redis 与 DB 实现

目录 1、什么是延时任务&#xff0c;分别可以使用哪些技术实现&#xff1f; 1.2 使用 Redis 和 DB 相结合的思路图以及分析 2、实现添加任务、删除任务、拉取任务 3、实现未来数据的定时更新 4、将数据库中的任务数据&#xff0c;同步到 Redis 中 1、什么是延时任务&#xff…

multiset和multimap(map和set的可重复版)

multiset和multimap multisetmultiset的使用 multimapmultimap的使用 这里有讲解map和set的详细使用&#xff1a; C中的map和set使用详解 multiset multiset的文档介绍 翻译&#xff1a; multiset是按照特定顺序存储元素的容器&#xff0c;其中元素是可以重复的。在multiset…

Vue学习笔记-Object.defineproperty函数

文章目录 前文提要Object.defineProperty作用Object.defineProperty参数使用例图getter&#xff0c;也就是get函数setter&#xff0c;也就是set函数 前文提要 本人仅做个人学习记录&#xff0c;如有错误&#xff0c;请多包涵 Object.defineProperty作用 当在js中声明了一个变…

深入理解JVM 类加载机制

深入理解JVM 类加载机制 虚拟机如何加载Class文件&#xff1f; Class文件中的信息进入到虚拟机后会发生什么变化&#xff1f; 类加载机制就是Java虚拟机把描述类的数据从Class文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机…

成为独立开发者有多难

首先自我介绍&#xff1a;我是一名前端开发工程师&#xff0c;7年的前端开发经验。CSDN 九段刀客_js,vue,ReactNative-CSDN博客,80多万的访问量&#xff0c;1万多的粉丝。 相信80%的程序员的终极梦想都是成为一名独立开发者&#xff0c;不用找工作有自己的产品可以有睡后收入。…

函数与数组

一.函数 1、函数的作用 定义较为复杂的但是需要重复使用的内容&#xff0c;以便再次使用&#xff0c;可以直接调用&#xff0c;节约时间&#xff0c;提高效率。 语句块定义成函数约等于别名&#xff0c;定义函数&#xff0c;再引用函数。 封装的可重复利用的具有特定功能的…

【机器学习 | ARIMA】经典时间序列模型ARIMA定阶最佳实践,确定不来看看?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

宣传技能培训1——《新闻摄影技巧》

新闻摄影技巧 写在最前面摘要 构图与拍摄角度景别人物表情与叙事远景与特写 构图与拍摄角度案例 主体、陪体、前景、背景强调主体利用前景和背景层次感的创造 探索新闻摄影中的构图技巧基本构图技巧构图技巧的应用实例实例分析1. 黄金分割和九宫格2. 三角型构图3. 引导线构图4.…

JSP过滤器和监听器

什么是过滤器 Servlet过滤器与Servlet十分相似&#xff0c;但它具有拦截客户端&#xff08;浏览器&#xff09;请求的功能&#xff0c;Servlet过滤器可以改变请求中的内容&#xff0c;来满足实际开发中的需要。 对于程序开发人员而言&#xff0c;过滤器实质就是在Web应用服务器…

Matrix

Matrix 如下是四种变换对应的控制参数&#xff1a; Rect 常用的一个“绘画相关的工具类”&#xff0c;常用来描述长方形/正方形&#xff0c;他只有4个属性&#xff1a; public int left; public int top; public int right; public int bottom; 这4个属性描述着这一个“方块…

IAR为恩智浦S32M2提供全面支持,提升电机控制能力

IAR Embedded Workbench for Arm已全面支持恩智浦最新的S32系列&#xff0c;可加速软件定义汽车的车身和舒适性应用的开发 瑞典乌普萨拉&#xff0c;2023年11月22日 – 嵌入式开发软件和服务的全球领导者IAR现已全面支持恩智浦半导体&#xff08;NXP Semiconductors&#xff0…

数字化时代,数据资产交易困境的治理

数据作为五大生产要素之一&#xff0c;正与行业应用深度结合&#xff0c;成为推动产业、企业数字化转型升级的重要驱动力量。数据作为基础的战略性资源和新的生产要素&#xff0c;如果不能充分流通和交易&#xff0c;就丧失了价值和作用。因此&#xff0c;数据资产的交易关系着…

8.HTML中表单标签

8. 表单标签 8.1 为什么需要表单 使用表单的目的是为了收集用户信息&#xff0c; 在我们网页中&#xff0c;我们也需要跟用户进行交互&#xff0c;收集用户资料&#xff0c;此时就需要表单 8.2 表单的组成 在HTML中&#xff0c;一个完整的表单通常由表单域&#xff0c;表单控件…

微信小程序 - 云开发

1、小程序云开发 1.1、云开发简介 小程序云开发是微信团队联合腾讯云推出的专业的小程序开发服务。开发者可以使用云开发快速开发小程序、小游戏、公众号网页等&#xff0c;并且原生打通微信开放能力。开发者无需搭建服务器&#xff0c;可免鉴权直接使用平台提供的API进行业务…