碰撞的小球


代码比较长是因为看错题意,题目要求最后按序号输出位置,因此既要存序号,也要存位置。先将小球按照初始位置排序,定义另一个数组mov来记录小球移动的距离,每过一个单位时间判断是否发生碰撞,并修改mov的方向和距离。t时间后记录最后每个小球所在的位置,并按照小球序号重新排序。

#include<bits/stdc++.h>
using namespace std;
int n,l,t;
struct Ball{ //定义一个结构体,存球的序号和初始位置 int number;int location;
}ball[101];bool cmp1(Ball a,Ball b){ //定义两个cmp函数用于将ball分别按照序号或位置排序 return a.location  < b.location;
}bool cmp2(Ball a,Ball b){return a.number  < b.number;
}int mov[101][2] ={0};/*定义一个mov数组mov[n][0]用于存放每个小球相对于初始位置的行进距离, mov[n][1]用于存放小球的行进方向,0代表前进,1代表后退  */
int check(int w ,int x, int y,int z){if(x + y ==l){      //定义一个判断碰撞的函数,有碰左边,碰右边,两球相碰,不碰撞四种情况 return 1;}else if(x + y== w + z){return 2;}else if(x + y==0){return 3;}return 4;
}int main(){cin>>n>>l>>t;for(int i = 0; i < n; i++){cin>>ball[i].location;//输入小球的初始位置,序号 ball[i].number = i;}sort(ball,ball+n,cmp1); //按照初始位置排序 for(int i = 0; i < t; i++){for(int k = 0; k < n; k++){int x = ball[k].location,y = mov[k][0],w = ball[k-1].location,z=mov[k-1][0];int flag = check(w,x,y,z);//检查碰撞,根据情况使小球反向 if(flag==1 || flag == 3){mov[k][1] = mov[k][1] ^ 1;//异或反向 }else if(flag == 2){mov[k][1] = mov[k][1] ^ 1;mov[k-1][1] = mov[k-1][1] ^ 1;}}for(int j = 0; j < n; j++){  //正向移动距离增加,反向减少 if(mov[j][1] == 0){    mov[j][0]++;}else if(mov[j][1] == 1){mov[j][0]--;}}/*for(int i = 0; i < n; i++){cout<<a[i]+mov[i][0]<<" ";}cout<<endl;*/}for(int i = 0; i < n; i++){ball[i].location+=mov[i][0]; //计算每个小球t时间后的最终位置 }sort(ball,ball+n,cmp2);//重新按照序号排序 for(int i = 0 ; i < n; i++){cout<<ball[i].location<<" "; //输出答案 }}

CCF CSP 碰撞的小球 C++相关推荐

  1. CCF计算机软件能力认证试题练习:201803-2 碰撞的小球

    碰撞的小球 来源:CCF 标签: 参考资料: 相似题目: 题目 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上, ...

  2. 碰撞的小球 ccf (模拟)

    问题描述 试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐 ...

  3. 【CCF】201803-2 碰撞的小球

    试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体 ...

  4. CCF 201803 跳一跳 碰撞的小球 url映射 棋局评估

    试题编号: 201803-1 试题名称: 跳一跳 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱. 简化后的跳一跳规则如下: ...

  5. CCF CSP认证菜鸟刷题日志

    CCF CSP菜鸟刷题日志(c/c++) 本萌新写给自己看的,要是有大佬路过,请多多指教orz 立个flag:每日一更,至201903 9月15ccf csp,冲鸭! 今天(2019.8.18)起每天 ...

  6. CCF CSP认证考试题解目录

    由于本人的书籍<算法详解(C++11 语言描述)>已经出版,为了降低题解的维护难度,有关CCF CSP考试的所有题解的更新将全部在书籍的配套仓库进行,CSDN博客中不再进行任何题解的更新. ...

  7. CCF CSP 201609-2 火车购票

    题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...

  8. 计算机能力挑战赛_蓝桥杯、PAT、CCF CSP、团体程序设计天梯赛、传智杯、计算机能力挑战赛、软考等大学生编程比赛/考试介绍...

    介绍7个适合普通大学生参加的编程比赛/考试(注:有的比赛如蓝桥杯有多种赛别,本文仅介绍其中的程序设计/编程比赛). 编程入门书籍推荐<算法笔记>,内容详细易懂,对新手非常友好,描述语言为C ...

  9. CCF201803-2 碰撞的小球

    试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体 ...

最新文章

  1. 2_Python实现基于人脸特征的美颜算法(20181224)
  2. HackerRank Gift Boxes(hash)
  3. c++服务器开发学习--01--c++基础,socket
  4. Apache重定向方法实现图片防盗链
  5. Python统计TXT词云
  6. dup java_java web----TCP/DUP 通信
  7. [IE编程] 打开/关闭IE8的光标浏览模式(Caret Browsing)
  8. C++ 编译运行报错 error: stray ‘\200’ in program 解决方案
  9. Atitit 信息检索 之音乐检索实践 艾提拉注 目录 1. 常规检索 歌手 歌名 1 1.1. 年代检索 1 1.2. 歌词检索(可以依靠web 1 1.3. 哼唱检索 原曲检索(可以使用酷
  10. 卓越郭朝晖:垂直类B2C网站可能昙花一现
  11. 遇到一个诡异的regedit.exe程序问题
  12. Vue中this的指向问题
  13. Python刷博客简易版
  14. 如何建立个人网站:从搭建到运营再到盈利
  15. 安卓手机测评_民宿预订Airbnb、途家民宿、小猪、木鸟短租、蚂蚁短租五大平台测评...
  16. .Net Core微服务化ABP之六——处理Authentication
  17. Homework02
  18. 微软mysql官网_az mysql
  19. 《Spring响应式微服务》读书笔记
  20. php生成ssl证书,https自颁发证书一键生成

热门文章

  1. 一个屌丝程序猿的人生(六十二)
  2. linux下根目录各个文件夹的意义
  3. 关于-858993460这个数字
  4. 建筑八大员培训湖北质量员培训古建筑施工中的质量控制要点
  5. 孩子数学成绩不好怎么办_初二孩子数学成绩不好怎么办
  6. 基于POI框架操作Excel文件
  7. linux的scp命令用不了,scp命令及使用过程中常见问题的解决方案
  8. 罗振宇跨年演讲之夜 阿里云护航得到App
  9. 2019年经济能翻盘吗?这篇文章帮你看懂中国的经济周期
  10. Emacs的”改写“与”插入“模式切换: