题目什么的就不写了,觉得大家都看过,直接上思路!
解题思路
碰撞的小球一题和下面链接里的题目类似:
POJ的题目Ants
可惜还是有点区别,如果使用和上题一样的思路,会带来不必要的麻烦!(我使用上题的思路没有做出来,大家可以试试)
POJ的题目Ants这道题的解题思路还是挺新颖的,建议大家看看!
在我抛弃上述思路的做法后,很快就写出了答案:
一、首先定义了一个结构体:
typedef struct Ball ball;
struct Ball{
int position;//表示小球位置
int dir=1;//小球移动方向,同时也是移动的距离
};
二、用结构体定义小球数组,输入
int n,L,t;//小球个数,线段长度,时间
scanf("%d %d %d",&n,&L,&t);
ball b[n];//存放小球信息
//默认小球向前移动
for(int i=0;i<n;i++){
scanf("%d",&b[i].position);
}
三、主要逻辑代码
//时间控制总循环次数
for(int i=1;i<=t;i++){
//需要改变方向的小球,应该改变方向
//即特殊位置:0和线段末尾
for(int j=0;j<n