資源簡介
某企業面試編程題:螞蟻爬桿
有一根300厘米的細木桿,在第30厘米、80厘米、110厘米、160厘米、250厘米這五個位置上各有一只螞蟻。木桿很細,不能同時通過兩只螞蟻。開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會后退。當任意兩只螞蟻碰頭時,兩只螞蟻會同時調頭朝相反方向走。假設螞蟻們每秒鐘可以走5厘米的距離。請編寫一個程序,計算各種可能情形下所有螞蟻都離開木桿的最小時間和最大時間。
如題目的圖形界面解決方法~c#表達~
代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Text;
using?System.Windows.Forms;
using?System.Drawing.Drawing2D;
namespace?ANTS
{
????public?partial?class?Form1?:?Form
????{
????????ants[]?ant?=?new?ants[32];
????????int?xBegin?=?30?yBegin?=?20;
????????int?minTime?=?0?maxTime?=?0;
????????public?Form1()
????????{
????????????InitializeComponent();
???????????
????????}
????????private?void?button1_Click(object?sender?EventArgs?e)
????????{
????????????initializateAnts();
????????????for?(int?i?=?0;?i?32;i++?)?showAnts(ant[i]?xBegin?+?i?%?2?*?340?yBegin?+?i?/?2?*?20);
????????}
????????private?void?button2_Click(object?sender?EventArgs?e)
????????{
????????????progress();
????????????showResult();
????????}
????????void?initializateAnts()
????????{
????????????int[]?num?=?new?int[5];//32diferent?direction
????????????int?i1;
????????????for?(int?i?=?0;?i?32;?i++)
????????????{
????????????????i1?=?i;
????????????????for?(int?j?=?0;?j?5;?j++)
????????????????{
????????????????????num[j]?=?i1?%?2;
????????????????????if?(num[j]?==?0)?num[j]?=?-1;
????????????????????i1?/=?2;
????????????????}
????????????????ant[i]?=?new?ants(num[0]?num[1]?num[2]?num[3]?num[4]);
????????????????
????????????}
????????}//初始化32個螞蟻通過0-32的二位數字初始化方向
????????void?showAnts(ants?antint?xint?y)
????????{
????????????Graphics?barGra?=?this.CreateGraphics();
????????????Pen?BarPen?=?new?Pen(Color.BurlyWood?10);
????????????barGra.DrawLine(BarPen?x-6?y?x?+?300?+?6?y);//-2+2???CHANGE!!
????????????Graphics?antGra?=?this.CreateGraphics();
????????????Pen?antPenLeft?=?new?Pen(Color.Black?2);//CHANGE!!
????????????Pen?antPenRight?=?new?Pen(Color.White?2);
????????????for?(int?i?=?0;?i?5;i++?)//畫2種方向的螞蟻
????????????{
????????????????if?(ant.dir[i]?==??1)?antGra.DrawRectangle(antPenLeft??x?+?ant.pla[i]?y?-?1?2?2);
????????????????if?(ant.dir[i]?==?-1)?antGra.DrawRectangle(antPenRight?x?+?ant.pla[i]?y?-?1?2?2);
????????????}
????????????Pen?meetPen?=?new?Pen(Color.Red?2);//(float)1.5);
????????????for?(int?i?=?0;?i?5;?i++)//畫碰撞時的爆炸
????????????{
????????????????for?(int?j?=?i+1;?j?5;?j++)
????????????????{
????????????????????if?(ant.pla[i]?==?ant.pla[j]&&ant.pla[i]>10&&ant.pla[i]<290)
????????????????????????antGra.DrawEllipse(meetPen?x?+?ant.pla[i]-2?y?-?3?8?6);
????????????????}
????????????}
????????}//顯示每個bar
????????void?progress()//螞蟻移動?延時?及獲取minTime、maxTime
????????{
????????????int?gameOver?=?1;
????????????int?minTimeGot?=?0;
????????????int?waitTime;
????????????while?(gameOver?>?0)
????????????{
????????????????gameOver?=?0;
????????????????for?(int?i?=?0;?i?32;?i++)
????????????????{
????????????????????ant[i].move();
????????????????????if?(ant[i].alldroped()?==?true)?gameOver++;
????????????????????showAnts(ant[i]?xBegin?+?i?%
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????12800??2008-10-13?09:12??bin\Debug\ANTS.exe
?????文件??????32256??2008-10-13?09:12??bin\Debug\ANTS.pdb
?????文件??????14328??2008-10-13?09:41??bin\Debug\ANTS.vshost.exe
?????文件????????490??2007-07-21?01:33??bin\Debug\ANTS.vshost.exe.manifest
?????文件????????247??2008-10-01?17:26??obj\ANTS.csproj.FileList.txt
?????文件???????1318??2008-10-13?09:41??obj\Debug\ANTS.csproj.FileListAbsolute.txt
?????文件????????847??2008-10-13?09:12??obj\Debug\ANTS.csproj.GenerateResource.Cache
?????文件??????12800??2008-10-13?09:12??obj\Debug\ANTS.exe
?????文件????????180??2008-10-13?09:12??obj\Debug\ANTS.Form1.resources
?????文件??????32256??2008-10-13?09:12??obj\Debug\ANTS.pdb
?????文件????????180??2008-10-07?12:21??obj\Debug\ANTS.Properties.Resources.resources
?????文件???????4608??2008-10-12?09:19??obj\Debug\TempPE\Properties.Resources.Designer.cs.dll
?????文件???????1180??2008-09-29?18:59??Properties\AssemblyInfo.cs
?????文件???????2832??2008-10-07?12:21??Properties\Resources.Designer.cs
?????文件???????5612??2008-09-29?18:59??Properties\Resources.resx
?????文件???????1102??2008-10-07?12:21??Properties\Settings.Designer.cs
?????文件????????249??2008-09-29?18:59??Properties\Settings.settings
?????文件???????3464??2008-10-07?12:21??ANTS.csproj
?????文件???????2560??2008-10-13?09:13??ANTS.suo
?????文件??????????1??2008-10-01?17:10??ClassDiagram1.cd
?????文件???????7467??2008-10-13?09:12??Form1.cs
?????文件???????7591??2008-10-13?09:12??Form1.Designer.cs
?????文件???????5814??2008-10-13?09:12??Form1.resx
?????文件????????463??2008-09-29?18:59??Program.cs
?????目錄??????????0??2008-10-13?14:51??obj\Debug\Refactor
?????目錄??????????0??2008-10-13?14:51??obj\Debug\TempPE
?????目錄??????????0??2008-10-13?14:51??bin\Debug
?????目錄??????????0??2008-10-13?14:51??obj\Debug
?????目錄??????????0??2008-10-13?14:51??bin
?????目錄??????????0??2008-10-13?14:51??obj
............此處省略4個文件信息
- 上一篇:C#遠程控制軟件TwoCare完美無錯源代碼
- 下一篇:航空管理系統 asp.net
評論
共有 條評論