資源簡介
數(shù)學(xué)建模2019美賽D題 逃離盧浮宮 代碼
模型考慮要素:最短路徑,毒氣擴(kuò)散,擁擠度,5層地圖,秘密通道,傷亡程度
考慮到知識產(chǎn)權(quán),代碼中的數(shù)據(jù)沒有提供,可以提供思路,或作為模板自行編寫,代碼有足夠注釋,可以根據(jù)Main函數(shù)調(diào)用不同函數(shù)實(shí)現(xiàn)不同的模型,代碼加注釋的總行數(shù)大于1200行

代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;
//元胞自動機(jī)
int?main()
{
????//逃亡人數(shù)
????int?numOfPeople?=?30000;
????//模擬5層盧浮宮地圖
????vector?>?>?maps;
????//模擬逃亡者
????vector?people;
????//初始化盧浮宮地圖
????Floor::LoadMapsFromFile(maps);
????//初始化第二層的館號
????Floor::IntializeShopId(maps[2]);
????//初始化每一個人的初始位置
????Person::IntializePosition(people?maps?numOfPeople);
????//根據(jù)不同指標(biāo)計算每塊地板的權(quán)值
????Floor::ComputeFloorWeightByShortestPath(maps);
????//初始化毒霧區(qū)域
????Point?p?=?Floor::IntializeToxicArea(maps);
//????Person::IntializeCrowd(maps?people);
????//得到目前存活的人數(shù)
????numOfPeople?=?people.size();
????//記錄秘密通道有沒有開啟,模型中設(shè)定為三個
????bool?hasSecretDoors[3]?=?{false?false?false};
????//2層每個館開啟秘密通道時人數(shù)所需達(dá)到的閾值
????int?thresholds[3]?=?{100?3000?4000};
????//steps?目前走的步數(shù)
????//tempSteps?前后逃離盧浮宮兩人之間相隔的步數(shù)
????int?steps?=?0?tempSteps?=?0;
????//left?剩余未逃離人數(shù)
????int?left?=?numOfPeople;
????int?numOfDeath?=?0;
????int?numOfSevereInjury?=?0;
????int?numOfSlightInjury?=?0;
????do
????{
????????for(int?i?=?0;?i?3;?++i)
????????{
????????????//如果2層的某個館達(dá)到人數(shù)閾值,并且還沒有開啟秘密通道,就打開秘密通道
????????????if(Floor::shopNum[i]?>=?thresholds[i]?&&?!hasSecretDoors[i])
????????????{
????????????????Floor::ShowSecretDoor(maps?i);
????????????????//由于有了新的出口,需要重新計算2層沒個地板的閾值
????????????????Floor::ComputeFloorWeightByShortestPath(maps);
????????????????//打開對應(yīng)秘密通道
????????????????hasSecretDoors[i]?=?true;
????????????}
????????}
????????//毒氣會擴(kuò)散
????????Floor::UpdateToxicArea(maps?(steps+1)*0.625?p);
????????vector::iterator?it?=?people.end();
????????--it;
????????left?=?people.size();
????????//如果走了30步,還沒有新的一個人逃離盧浮宮,認(rèn)為陷入了某種死循環(huán)
????????if(tempSteps?>=?30)
????????{
????????????//計算當(dāng)前人員受傷情況,退出循環(huán)
????????????for(int?i?=?0;?i?????????????{
????????????????if(people[i].injure?==?2)
????????????????{
????????????????????numOfSevereInjury++;
????????????????}
????????????????else?if(people[i].injure?==?1)
????????????????{
????????????????????numOfSlightInjury++;
????????????????}
????????????}
????????????break;
????????}
????????for(int?i?=?left-1;?i?>=?0;?--i--it)
????????{
????????????//計算新一輪人員受傷死亡情況
????????????if(people[i].isExited)
????????????{
????????????????if(people[i].injure?==?2)
????????????????{
????????????????????numOfSevereInjury++;
????????????????}
????????????????else?if(people[i].injure?==?1)
????????????????{
????????????????????numOfSlightInjury++;
????????????????}
????????????????it?=?people.erase(it);
????????????????//如果有人逃離盧浮宮,tempSteps=0,繼續(xù)計數(shù)
????????????????tempSteps?=?0;
????????????}
????????????else?if(people[i].injure?==?3)
????????????{
????????????????it?=?people.erase(it);
????????????????numOfDeath++;
????????????}
????????????else
????????????{
????????????????//更新每一個存活的人的位置
????????????????people[i].MoveToNextFloor(maps?0);
????????????}
????????}
????????tempS
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1564656??2019-01-29?05:57??MathModel.Simulation\bin\Debug\MathModel.exe
?????文件?????970289??2019-01-25?14:16??MathModel.Simulation\bin\Debug\MathModel.Simulation.exe
?????文件???????1411??2019-03-07?18:35??MathModel.Simulation\include\Floor.h
?????文件???????3133??2019-03-07?18:35??MathModel.Simulation\include\Person.h
?????文件????????171??2019-01-25?15:31??MathModel.Simulation\include\Point.h
?????文件???????3711??2019-03-07?18:44??MathModel.Simulation\main.cpp
?????文件???????1339??2019-01-25?22:46??MathModel.Simulation\MathModel.Simulation.cbp
?????文件????????612??2019-01-29?05:58??MathModel.Simulation\MathModel.Simulation.depend
?????文件???????1357??2019-03-07?18:56??MathModel.Simulation\MathModel.Simulation.layout
?????文件?????190521??2019-01-29?05:57??MathModel.Simulation\obj\Debug\main.o
?????文件?????479028??2019-01-28?16:10??MathModel.Simulation\obj\Debug\src\Floor.o
?????文件?????230979??2019-01-28?13:15??MathModel.Simulation\obj\Debug\src\Person.o
?????文件???????8049??2019-03-07?18:44??MathModel.Simulation\src\Floor.cpp
?????文件??????18392??2019-01-28?12:55??MathModel.Simulation\src\Person.cpp
?????文件?????????93??2019-01-25?15:31??MathModel.Simulation\src\Point.cpp
?????目錄??????????0??2019-01-28?16:10??MathModel.Simulation\obj\Debug\src
?????目錄??????????0??2019-01-29?05:57??MathModel.Simulation\bin\Debug
?????目錄??????????0??2019-01-29?05:57??MathModel.Simulation\obj\Debug
?????目錄??????????0??2019-01-25?13:17??MathModel.Simulation\bin
?????目錄??????????0??2019-03-07?18:35??MathModel.Simulation\include
?????目錄??????????0??2019-01-25?13:17??MathModel.Simulation\obj
?????目錄??????????0??2019-03-07?18:44??MathModel.Simulation\src
?????目錄??????????0??2019-03-07?18:56??MathModel.Simulation
-----------?---------??----------?-----??----
??????????????3473741????????????????????23
評論
共有 條評論