【题目】一根长度为M厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为每秒1厘米。当两只蚂蚁对撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,

  • 文件名:[作业]
  • 作者:〈漆黑〉
  • 描述:〈 一根长度为M厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为每秒1厘米。当两只蚂蚁对撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒后每只蚂蚁的位置。〉
  • 创建时间:2019.7.11
  • 未完善
/**************************** * 文件名:[作业] * 作者:〈漆黑〉 * 描述:〈一根长度为M厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为每秒1厘米。当两只蚂蚁对撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒后每只蚂蚁的位置。〉 * 创建时间:2019.7.11 ****************************/ #include using namespace std; int main(){ int m, n, t, site; //m长度,n个数,t时间,site位置 char direction; //方向 cout << "请输入木棍长度(cm > 0):"; cin >> m; int** ant = new int* [m + 1]; for (int i = 0; i < m + 1; i++) ant[i] = new int[2]; for (int i = 0; i < m + 1; i++) { for (int j = 0; j < 2; j++) { ant[i][j] = 0; } } cout << "请输入蚂蚁的数量:"; cin >> n; for (int i = 0; i < n; i++) { cout << "请输入第" << i + 1 << "只蚂蚁的位置和朝向(l/r):"; cin >> site >> direction; ant[site][0] = 1; if(direction == 'l') ant[site][1] = -1; //-1朝左,1朝右 else if (direction == 'r') ant[site][1] = 1; } for (int i = 0; i < m + 1; i++) {//打印蚂蚁位置 cout << ant[i][0] << "\t"; } cout << endl; for (int i = 0; i < m + 1; i++) {//打印蚂蚁朝向 cout << ant[i][1] << "\t"; } cout << endl; cout << "请输入经过的时间:"; cin >> t; for (int i = 0; i < t; i++) {//每秒的动作 for (int j = 0; j < m + 1; j++) {//0-m厘米一共m+1个整点 if (ant[j][0] == 1) { if (ant[j][1] == -1 && j == 0) ant[j][1] = 1; //最左边调头 else if (ant[j][1] == 1 && j == m) ant[j][1] = -1; //最右边调头 if (ant[j][1] == -1 && j > 0 && ant[j - 1][0] == 0) {//左移 ant[j][0] = ant[j][1] = 0; ant[j - 1][0] = 1; ant[j - 1][1] = -1; }else if (ant[j][1] == 1 && j < m && ant[j + 1][0] == 0) {//右移 ant[j][0] = ant[j][1] = 0; ant[j + 1][0] = 1; ant[j + 1][1] = 1; j++; }else if (ant[j][1] == 1 && j < m && ant[j + 1][0] == 1 && ant[j + 1][1] == -1) {//相撞,位置不变方向相反 ant[j][1] = -1; ant[j + 1][1] = 1; j++; //下一个同时改变了跳过 } } } } for (int i = 0; i < m + 1; i++) {//打印蚂蚁位置 cout << ant[i][0] << "\t"; } cout << endl; for (int i = 0; i < m + 1; i++) {//打印蚂蚁朝向 cout << ant[i][1] << "\t"; } cout << endl; n = 1; for (int i = 0; i < m + 1; i++) { if (ant[i][0] == 1) { cout << "第" << n << "只蚂蚁在" << i << "cm处" << endl; n++; } } }

【【题目】一根长度为M厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为每秒1厘米。当两只蚂蚁对撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒后每只蚂蚁的位置】【题目】一根长度为M厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为每秒1厘米。当两只蚂蚁对撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,
文章图片

    推荐阅读