问题链接:。
问题简述:
一根长L厘米的木棍上有n只蚂蚁,已知每只蚂蚁有个开始的位置和爬行方向,速度为1。当两只蚂蚁相撞后,两者同时掉头继续爬行,求按输入顺序输出每只蚂蚁T秒后的位置和朝向。
问题分析:
蚂蚁碰头后,仍然是一只往左另一只往右,所以可以看作是各自继续行走。
T秒后位置,有可能变为负或大于木棍的长度,那就是掉落了。
不按照位置进行排序,就无法知道T秒后哪些蚂蚁调头。
过T秒后,蚂蚁的相对位置是不变的,所以按照之前的顺序进行输出即可。
程序说明:(略)
参考链接:(略)
题记:(略)
AC的C++程序如下:
/* UVa10881 Piotr's Ants */#include#include #include using namespace std;const char *dirname[] = {"L", "Turning", "R"};const int N = 10000;struct _ant { int no; // 序号 int pos; // 位置 int direction; // 方向:0-2(dirname) bool operator < (const _ant& a) const { return pos l) printf("Fell off\n"); else printf("%d %s\n", after[j].pos, dirname[after[j].direction]); } printf("\n"); } return 0;}