首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

【编程之好】 4.8统计所有蚂蚁出去的时间

2012-09-09 
【编程之美】 4.8统计所有蚂蚁出去的时间蚂蚁爬杆的算法中,只求出了蚂蚁出杆的时间,但是没有得到每个蚂蚁出

【编程之美】 4.8统计所有蚂蚁出去的时间

蚂蚁爬杆的算法中,只求出了蚂蚁出杆的时间,但是没有得到每个蚂蚁出去的时间,这里没有固定的算法,采用编程模拟实现,代码如下:

#include<iostream>using std::cout;using std::endl;using std::swap;int left[29];int right[29];void fun()//首先判断是否在同一个位置,如果两个蚂蚁处于同一位置,交换两个蚂蚁的方向{for (int i = 1; i != 29; ++i)if (left[i] && right[i])swap(left[i], right[i]);}void f()//判断是否擦肩而过,擦肩而过后,交换两个蚂蚁之间的顺序{for (int i = 1; i != 29; ++i)if (left[i] && right[i + 1]){//swap(left[i],right[i]);//注释的是错误写法//swap(left[i+1],right[i+1]);//错误写法swap(left[i], right[i + 1]);//正确交换方法}}void move(){for (int i = 1; i != 29; ++i){left[i - 1] = left[i];right[29 - i] = right[29 - 1 - i];}}int main(){right[3] = 1;right[11] = 2;left[7] = 3;left[17] = 4;left[23] = 5;//right[5] = 1;//left[6] = 2;int count = 0;for (int i = 1; count != 5; ++i){fun();move();f();if (left[0] && ++count)cout << left[0] << "号蚂蚁在第 " << i << " 秒爬出\n";if (right[28] && ++count)cout << right[28] << "号蚂蚁在第 " << i << " 秒爬出\n";}return 0;}

代码采用模拟方法,统计每个蚂蚁出去的时间,如果只计算出去时间,不考虑是哪个蚂蚁,可以使用《编程之美》书上的方法。

热点排行