2018-3-18CCF第二题小球碰撞问题,题目意思大致如下:

两面墙之间有n个小球,初始以每单位时间1单位长度向右运动,当小球撞到墙或者两个小球相撞时,小球向反方向运动,速度不变。(各小球初始位置和墙距均为偶数,不存在三个小球同时碰撞的情况)

要求:

1.第一行输入三个正整数:小球个数n,墙之间的距离L;时间t;

2.第二行输入n个偶数表示小球的起始位置;

3.输出经过t时间后各小球的位置。

思路:

1.设两个数组,a[]-小球位置,b[]-小球的运动方向/设向右为1,向左为-1;

2.小球发生碰撞只有两种情况:

碰墙-只有第一个和最后一个小球可能撞墙,a[0]=0 , a[n-1]=L;

碰球-只有相邻的两个小球可能发生碰撞,a[i]=a[i+1];

只要发生碰撞就意味着小球运动方向改变,b[i]取反,b[i]*(-1);

#include<stdio.h>
#include<stdlib.h>
int main() {int i,j;int n,l,t;int *a,*b;scanf("%d %d %d",&n,&l,&t);a = (int*)malloc(sizeof(int)*n);b = (int*)malloc(sizeof(int)*n);for(i=0;i<n;i++){scanf("%d",&a[i]);b[i]=1;}//假设小球的初始位置依次增大,这里不再对初始位置进行排序
//每一单位时间,小球前进一单位长度,一时一动一判for(j=0;j<t;j++){a[0]+=b[0];               //防止a[i-1]下址溢出,对a[0]单独处理if(a[0]==0||a[0]==a[1]+1)b[0]*=(-1);for(i=1;i<n;i++){a[i]+=b[i];if(a[i-1]==a[i]){     //两球相撞,两个球都要改变方向b[i]=b[i]*(-1);b[i-1]=b[i-1]*(-1);}if(a[i]==l)              //判断最后一个球是否撞墙     b[i]=b[i]*(-1);}}for(i=0;i<n;i++)printf("%d ",a[i]);return 0;
}

2018-3-18CCF小球碰撞问题相关推荐

  1. pygame动画演示小球碰撞

    使用pygame实现动量定理的小球碰撞演示动画 动量定理我们在高中的时候就已经接触过了,是十分重要的物理定理.其中的完全弹性碰撞(机械能守恒)是十分典型的例子,机械能守恒和动量定理两个公式就可以推出小 ...

  2. 一个与小球碰撞有关的有趣问题

    -一个与小球碰撞有关的问题 -本人学号:16340300 -本人学院:数据科学与计算机学院 目录 看看这个问题 如何解决 解法 看看这个问题 如图,在光滑水平面上,有一个球A向墙运动,速度垂直于墙面, ...

  3. Canvas+Js制作动量守恒的小球碰撞

    目的:通过js实现小球碰撞并实现动量守恒 canvas我们就不多说了,有用着呢. 我们可以通过canvas画2D图形(圆.方块.三角形等等)3D图形(球体.正方体等待). 当然这只是基础的皮毛而已,c ...

  4. Java反弹球两球相撞_java实现小球碰撞反弹

    java实现小球碰撞反弹 java实现小球碰撞反弹 首先我们要在一个窗口里面显示这个功能,因此引入JFrame类然后创建一个窗口代码如下: JFrame win=new JFrame();//新建窗口 ...

  5. JS实现小球碰撞边界反弹-点击消失(详细解析实现思路)

    本篇文章给大家带来的是原生JS实现小球碰到边界就反弹,点击小球时小球被会销毁,并重新创建一个小球,让小球的数量一直保持在初始的数量,按照思路按步骤进行讲解,只需要源码的小伙伴可以定位到文本末尾直接复制 ...

  6. js 小球碰壁反弹and小球碰撞

    好像好几天没有更博了呢,最近有点变懒了,这样不好,不好~~我们要做热爱学习的好孩子,嘻嘻,今天下午补上... 我们在学习js的时候,一个很经典的案例就是小球的碰壁反弹效果啦~简单的小球碰壁效果可以慢慢 ...

  7. js小球碰撞js特效

    下载地址 小球碰撞特效.引用test.js文件.我目前做的是10个小球同时出现,你也可以根据你的需要进行修改.如果你想要小球随机出现的话,你只需要把58行的代码解注,然后57行的注释就行了.这个写法还 ...

  8. Simscape基础教程之实例(一)——使用Simscape三维物理仿真自由落体小球碰撞平面

    一. 简介 本实例使用MATLAB/Simulink里面的simscape,实现自由落体小球碰撞平面的三维物理仿真,可用于新手入门simscape的参考示例. 二. 准备工作 需要安装的工具箱 (1) ...

  9. 绘制canvas彩色泡泡小球碰撞

    globalCompositeOperation带来的不一样的烟花 一.知识点 1.动画: setInterval(             function(){                 d ...

  10. js实现多个小球碰撞

    实现思路:小球的移动,是通过改变小球的left和top值来改变,坐标分别为(x,y)当x/y值加到最大,即加到父级的宽度或者高度时,使x值或者y值减小,同理当x值或者y值减到最小时,同样的使x值或者y ...

最新文章

  1. 清华开源Jittor:首个国内高校自研深度学习框架,一键转换PyTorch
  2. Apache Kafka源码分析 – Log Management
  3. python判断变量不为空_Python简洁方法
  4. Sybase Anywhere 11 元数据[SQL Schema]
  5. iOS制作一个雷达图,可用于多种场景(一)
  6. 【转】RabbitMQ六种队列模式-3.发布订阅模式
  7. [Codeforces 920E]Connected Components?
  8. TBB(Intel Threading Building Blocks)
  9. 计算机组成原理-第3章-3.3
  10. c语言程序该不该背,C语言程序设计学习技巧
  11. 在线文本比较工具(对比工具)
  12. 图灵奖得主亲授!深度学习视频课程精选
  13. 前端下载zip出现文件打不开
  14. 为大家介绍两款私藏宝藏可视化大屏制作软件
  15. 塞规公差带图_塞规公差计算表
  16. 上传文件到到大数据平台
  17. 关于流程管理的这些事:项目流程及方法工具
  18. react-native中react-native-render-html的使用(不崩溃)
  19. python绘图之使用matplotlib连接两个点
  20. 远程连接“由于无法升级或重续本地计算机的客户端访问许可证,远程会话被中断的解决

热门文章

  1. oracle rman异地备份,rman异地备份与恢复测试
  2. MATLAB 2018
  3. git使用vimdiff模式比对代码
  4. VGG16和VGG19网络结构图
  5. Horizon client 连接桌面后显示:USB已禁用/USB重定向功能已禁用
  6. 【记要】计算机基础通识知识
  7. 小波分析工具包 matlab,matlab小波工具箱下载|
  8. cleverhans库——FGSM代码实战
  9. Microsoft Office Visio(Windows)无限弹窗的诡异问题
  10. 电脑的眼泪--无限弹窗3