CCF CSP 碰撞的小球 C++
碰撞的小球
代码比较长是因为看错题意,题目要求最后按序号输出位置,因此既要存序号,也要存位置。先将小球按照初始位置排序,定义另一个数组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++相关推荐
- CCF计算机软件能力认证试题练习:201803-2 碰撞的小球
碰撞的小球 来源:CCF 标签: 参考资料: 相似题目: 题目 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上, ...
- 碰撞的小球 ccf (模拟)
问题描述 试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐 ...
- 【CCF】201803-2 碰撞的小球
试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体 ...
- CCF 201803 跳一跳 碰撞的小球 url映射 棋局评估
试题编号: 201803-1 试题名称: 跳一跳 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱. 简化后的跳一跳规则如下: ...
- CCF CSP认证菜鸟刷题日志
CCF CSP菜鸟刷题日志(c/c++) 本萌新写给自己看的,要是有大佬路过,请多多指教orz 立个flag:每日一更,至201903 9月15ccf csp,冲鸭! 今天(2019.8.18)起每天 ...
- CCF CSP认证考试题解目录
由于本人的书籍<算法详解(C++11 语言描述)>已经出版,为了降低题解的维护难度,有关CCF CSP考试的所有题解的更新将全部在书籍的配套仓库进行,CSDN博客中不再进行任何题解的更新. ...
- CCF CSP 201609-2 火车购票
题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...
- 计算机能力挑战赛_蓝桥杯、PAT、CCF CSP、团体程序设计天梯赛、传智杯、计算机能力挑战赛、软考等大学生编程比赛/考试介绍...
介绍7个适合普通大学生参加的编程比赛/考试(注:有的比赛如蓝桥杯有多种赛别,本文仅介绍其中的程序设计/编程比赛). 编程入门书籍推荐<算法笔记>,内容详细易懂,对新手非常友好,描述语言为C ...
- CCF201803-2 碰撞的小球
试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体 ...
最新文章
- 2_Python实现基于人脸特征的美颜算法(20181224)
- HackerRank Gift Boxes(hash)
- c++服务器开发学习--01--c++基础,socket
- Apache重定向方法实现图片防盗链
- Python统计TXT词云
- dup java_java web----TCP/DUP 通信
- [IE编程] 打开/关闭IE8的光标浏览模式(Caret Browsing)
- C++ 编译运行报错 error: stray ‘\200’ in program 解决方案
- Atitit 信息检索 之音乐检索实践 艾提拉注 目录 1. 常规检索 歌手 歌名	1 1.1. 年代检索	1 1.2. 歌词检索(可以依靠web	1 1.3. 哼唱检索 原曲检索(可以使用酷
- 卓越郭朝晖:垂直类B2C网站可能昙花一现
- 遇到一个诡异的regedit.exe程序问题
- Vue中this的指向问题
- Python刷博客简易版
- 如何建立个人网站:从搭建到运营再到盈利
- 安卓手机测评_民宿预订Airbnb、途家民宿、小猪、木鸟短租、蚂蚁短租五大平台测评...
- .Net Core微服务化ABP之六——处理Authentication
- Homework02
- 微软mysql官网_az mysql
- 《Spring响应式微服务》读书笔记
- php生成ssl证书,https自颁发证书一键生成