代码也贴到csdn了
https://code.csdn.net/snippets/231437GetTime函数
//根据方向获取时间
public static int GetTime()
{
//保存
dir.CopyTo(originalDir,0);
//重新设置 位置
loc = new int[AntNums]{
//在第3厘米,7厘米,11厘米,17厘米,23厘米
3,7,11,17,23
};//位置
int time = 0;
while(AnyAntInLine())
{
time++;//时间自增
//标记为本次还未行走
for(int i = 0;i < loc.Length;i++)
walked[i] = false;
for(int i = 0;i < loc.Length;i++)
{
//如果有两只方向相反,距离为1,则本次移动只需调整方向即可
for(int j = i + 1;j < loc.Length;j++)
{
if(Math.Abs(loc[i] - loc[j]) == 1 && //距离为1
dir[i] + dir[j] == 0 &&//方向相反
walked[i] == false && walked[j] == false
)
{
walked[i] = true;
walked[j] = true;
dir[i] *= -1;
dir[j] *= -1;
}
}
}
//move
for(int i = 0;i < loc.Length;i++)
{
if(walked[i] == false)
{
loc[i] += dir[i];
}
}
//检测重合
for(int i = 0;i < loc.Length;i++)
{
for(int j = i + 1;j < loc.Length;j++)
{
if(loc[i] == loc[j])
{
//重合 转向
dir[i] *= -1;
dir[j] *= -1;
}
}
}
}
Console.Write("Time={0},Dir:",time);
originalDir.ToList().ForEach(i => Console.Write(i + "\t"));
Console.WriteLine("\n");
//处理时间
return time;
}