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

2023-11-24 01:36

本文主要是介绍CCFCSP试题编号:201803-2试题名称:碰撞的小球,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一、题目描述

 二、思路

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;}}}
}

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

这篇关于CCFCSP试题编号:201803-2试题名称:碰撞的小球的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/421039

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

hdu 3065 AC自动机 匹配串编号以及出现次数

题意: 仍旧是天朝语题。 Input 第一行,一个整数N(1<=N<=1000),表示病毒特征码的个数。 接下来N行,每行表示一个病毒特征码,特征码字符串长度在1—50之间,并且只包含“英文大写字符”。任意两个病毒特征码,不会完全相同。 在这之后一行,表示“万恶之源”网站源码,源码字符串长度在2000000之内。字符串中字符都是ASCII码可见字符(不包括回车)。

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

ccfcsp-202206(1、2、3)

202206-1 归一化处理 #include <bits/stdc++.h>using namespace std;int main() {int n;cin >> n;vector<double> vec(n);double ave = 0;for(int i = 0; i < n; i++){cin >> vec[i];ave += vec[i];}ave /= n;double va

Oracle 查看表空间名称及大小和删除表空间及数据文件方法

--1、查看表空间的名称及大小  SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size  FROM dba_tablespaces t, dba_data_files d  WHERE t.tablespace_name = d.tablespace_name  GROUP BY t.tablespace_na

12个小球 梅氏砝码问题

1. 12个小球,其中有一个是坏球。有一架天平。需要你用最少的称次数来确定哪个小球是坏的并且它到底是轻还是重。 来源:http://blog.csdn.net/pongba/article/details/2544933 这个问题是一道流传已久的智力题。网络上也有很多讲解,还有泛化到N个球的情况下的严格证明。也有零星的一些地方提到从信息论的角度来看待最优解法。本来我一直认

Java应用对接pinpoint监控工具的时候,应用名称长度超出限制而导致接入失败

一、背景 java应用需要接入pinpoint,同一个虚拟机上的其他应用接入成功,唯独本应用不行。 首先排除是pinpoint agent的问题,因为其他应用都正常。 然后,我就对比二者的启动脚本。 -javaagent:/opt/pinpoint/pinpoint-bootstrap.jar -Dpinpoint.agentId=DA301004_17 -Dpinpoint.applic

【JavaScript】方法属性的匿名函数是匿名函数么(附:获取当前执行函数名称的方法)

var ninja = {shout: function(){console.log("hello");}}   有些人可能认为,将匿名函数赋值给名为shout的属性也就相当于给它取了名字,其实这是不正确的理解。shout是属性的名称,而不是函数自身的名称。这一点可以通过检查函数的name属性来验证。 下面是一些测试实例,请自行思考(前两个均为匿名函数):

批量生成编号(A~Z+3位流水编号)

/*** 批量生成编号* @param num* @param warehouseId* @return*/public synchronized List<String> generatCodeList(int num,long warehouseId){MesRack rack = this.getCurrentRack(warehouseId);String oldRackCode;Lis

广东省特殊食品生产试题分享

1.食品污染是指在各种条件下,导致有毒有害物质进入到食物中,造成以下哪项发生转变的过程。(D) A.食品的安全性 B.食品的养分性 C.食品的感官性状 D.以上都是 2.食品污染物是指(D) A.生物性污染物 B.化学性污染物 C.物理性污染物 D.以上都是 3.关于菌落总数的表达,错误的选项是(A) A.反映食品对人体安康的危害程度 B.是食品清洁状态的标志 C.推测食品的耐保藏性 D.指1g检