计算机网络透明网桥的算法,计算机网络透明网桥算法时间戳c++

要交CG的兄弟们别抄啊,撞上了严nan谁都不会放过的

好久没写博客了,这次是老师布置的作业,做出来一种,觉得写得很不好,第一种方法把情况都写死在代码里了。

上代码

#include

#include

using namespace std;

int main(){

mapmp1;

mapmp2;

while(true){

cout<

char destinatios,source;

int inport1,inport2;

cin>>source>>destinatios>>inport1>>inport2;

mp1[source]=inport1;

mp2[source]=inport2;

if(mp1[destinatios]==0&&mp2[destinatios]==0){

cout<

continue;

}

if(inport1==mp1[destinatios]){

cout<

continue;

mp1[source]=inport1;

}else cout<

if(inport2==mp2[destinatios]){

cout<

mp2[source]=inport2;

continue;

}else cout<

}

return 0;

}

4fee8b5597a0bb83f58051fafc4fc8e2.png

83548f06f8a2d4e3cececf02d7071100.png

第二种就较友好点,我把网桥的数量可以自定义,我认为这样才是真正的实现了学习的需求

上代码

#include

#include

#include

using namespace std;

int main(){

int n;

cout<

cout<

cout<

cin>>n;//桥数

vector >v(n);

while(true){

char destinatios,source;

int start1,start2;

cin>>start1>>start2>>source>>destinatios;

int f=0;

if(v[start1][destinatios]==0&&v[start2][destinatios]==0){

cout<

for(int i=0;i<=start1;i++)

v[i][source]=2;

for(int i=start2;i

v[i][source]=1;

continue;

}

if(v[start1][destinatios]==2){

cout<

f=1;

}

if(v[start2][destinatios]==1){

cout<

if(f==1){

cout<

continue;

}

}

if(v[start1][destinatios]==1){

while(v[start1][destinatios]==1){

cout<

v[start1][source]=2;

start1--;

}

continue;

}

if(v[start2][destinatios]==1){

while(v[start2][destinatios]==1){

cout<

v[start2][source]=1;

start2--;

}

continue;

}

}

}

678a33ada92b70cf230f95405b94746f.png

5f288aa12ce53f57b47a570110daaaf2.png

接下来做的是要加上时间戳,我对时间函数的调用不是很熟悉,就只是实现了这个功能,没有追求精确无误,功能没有问题,但是不是严格得按照打印输出一样显示超过五秒就删除

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int n;

vector >v(100);

vector >shijian(100);

void ff(){

for(int k=0;k

for(map::iterator it=shijian[k].begin();it!=shijian[k].end();it++){

clock_t start;

start = clock();

char sou=it->first;

if(start-it->second-shijian[k][sou]>5*60){

v[k][sou]=0;

cout<

}

}

}

}

int main(){

cin>>n;

while(true){

clock_t start;

char des,sou;

int start1,start2;

cin>>start1>>start2>>sou>>des;

int f=0;

if(v[start1][des]==0&&v[start2][des]==0){

cout<

for(int i=0;i<=start1;i++){

v[i][sou]=2;

start = clock();

shijian[i][sou]=start;

cout<

}

for(int j=start2;j

v[j][sou]=1;

start = clock();

shijian[j][sou]=start;

cout<

}

ff();

continue;

}

if(v[start1][des]==2){

cout<

f=1;

}

if(v[start2][des]==1){

cout<

if(f==1){

cout<

ff();

continue;

}

}

if(v[start1][des]==1){

while(v[start1][des]==1){

cout<

v[start1][sou]=2;

start = clock();

shijian[start1][sou]=start;

cout<

start1--;

}

ff();

continue;

}

if(v[start2][des]==1){

while(v[start2][des]==1){

cout<

v[start2][sou]=1;

start = clock();

shijian[start2][sou]=start;

cout<

start2--;

}

ff();

continue;

}

ff();

}

}

12ffca247225998fd189d9dd2948395b.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值