顺序容器5

#include<queue>
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
const int SPLIT_TIME_MIN=500;
const int SPLIT_TIME_MAX=2000;
class Cell;
priority_queue<Cell>cellQueue;
class Cell{
private:
static int count;
int id;
int time;
public:
Cell(int brith):id(count++){
time=brith+(rand()%(SPLIT_TIME_MAX-SPLIT_TIME_MIN))+SPLIT_TIME_MIN;
}
int getId() const {return id;}
int getSplitTime() const{return time;}
bool operator<(const Cell& s) const{return time>s.time;}
void split(){
Cell child1(time),child2(time);
cout<<time<<"s:Cell #"<<id<<"splits to #"
<<child1.getId()<<"and #"<<child2.getId()<<endl;
cellQueue.push(child1);
cellQueue.push(child2);
}
};
int Cell::count=0;
int main()
{
srand(static_cast<unsigned>(time(0)));
int t;
cout<<"Simulation time: ";
cin>>t;
cellQueue.push(Cell(0));
while(cellQueue.top().getSplitTime()<=t){
cellQueue.top().split();
cellQueue.pop();
}
return 0;
}

 

posted @   不会JAVA的小袁  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示