散分啦。。。

sourcecodeoflinux sourcecodeoflinux 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#include<iostream.h>

#include<stdlib.h>

#include<math.h>

#include<time.h>

class point{

public:

int x;

int y;

double t;

void setp(int a,int b,double c)

{

x=a;

y=b;

t=c;

}

};

point points[27];

int max()

{

int m=0;

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

if((points[i].x+points[i].y)>(points[m].x+points[m].y))

m=i;

return m;

}

int explore1(point a)

{

int m[25];int k=0;

for(int j=0;j<26;j++)

if((a.x>=points[j].x)||(a.y>=points[j].y))

if(points[j].x+points[j].y!=0)

if((a.x!=points[j].x)&&(a.y!=points[j].y))

if((abs(a.x-points[j].x)+abs(a.y-points[j].y))<(a.x+a.y)/2)

{

m[k]=j;

k++;

}

int q;

if(k)

{

q=rand()%k;

return m[q];

}

else

return 26 ;

}

int explore2(point a,point b)

{

int m[25];int k=0;

for(int j=0;j<26;j++)

if(a.t+b.t+points[j].t<=6.0)

if((b.x!=points[j].x)&&(b.y!=points[j].y)&&(a.x!=points[j].x)&&(a.y!=points[j].y))

if((a.x>=points[j].x)||(a.y>=points[j].y))

if(points[j].y+points[j].x!=0)

if((abs(a.x-points[j].x)+abs(a.y-points[j].y))<(a.x+a.y)/3)

{

m[k]=j;

k++;

}

int q;

if(k)

{

q=rand()%k;

return m[q];

}

else

return 26 ;

}

int explore3(point a,point b,point c)

{

int m[25];

int k=0;

for(int j=0;j<26;j++)

if((a.t+b.t+c.t+points[j].t<=6.0)&&(a.t+b.t+c.t+points[j].t>=4.2))

if((c.x!=points[j].x)&&(c.y!=points[j].y)&&(b.x!=points[j].x)&&(b.y!=points[j].y)&&(a.x!=points[j].x)&&(a.y!=points[j].y))

if((a.x>=points[j].x)&&(a.y>=points[j].y)&&(points[j].y+points[j].x!=0))

//if((abs(a.x-points[j].x)+abs(a.y-points[j].y))<(a.x+a.y)/3)

{

m[k]=j;

k++;

}

int q;

if(k)

{

q=rand()%k;

return m[q];

}

else

return 26 ;

}

double result(point a,point b,point c,point d)

{

double T=(a.x+a.y+abs(a.x-b.x)+abs(a.y-b.y)+abs(c.x-b.x)+abs(c.y-b.y)+abs(c.x-d.x)+abs(c.y-d.y)+d.x+d.y)*1.0/35+1.0/6;

if(b.t!=0)

T+=1.0/6;

if(c.t!=0)

T+=1.0/6;

if(d.t!=0)

T+=1.0/6;

double M=(a.x+a.y)*0.4+(abs(a.x-b.x)+abs(a.y-b.y))*a.t*1.8+(abs(c.x-b.x)+abs(c.y-b.y))*(a.t+b.t)*1.8+(abs(c.x-d.x)+abs(c.y-d.y))*(a.t+c.t+b.t)*1.8+(d.x+d.y)*(a.t+d.t+c.t+b.t)*1.8;

cout<<"时间:"<<T<<'\n'<<"花费:"<<M<<'\n';

return M;

}

void main()

{

for(int w=0;w<8;w++)

{

cout<<"第"<<w<<"组结果:"<<'\n'<<'\n';

srand(time(NULL));

points[0].setp(3,2,1.50);

points[1].setp(1,5,1.50);

points[2].setp(0,8,0.85);

points[3].setp(3,11,1.3);

points[4].setp(7,9,1.2);

points[5].setp(9,6,2.3);

points[6].setp(14,0,1.5);

points[7].setp(17,3,1.1);

points[8].setp(14,6,2.5);

points[9].setp(10,12,1.8);

points[10].setp(7,14,0.6);

points[11].setp(2,16,1.5);

points[12].setp(11,17,1.5);

points[13].setp(15,12,0.8);

points[14].setp(19,9,1.4);

points[15].setp(22,5,1.2);

points[16].setp(15,19,1.6);

points[17].setp(15,14,1.6);

points[18].setp(20,17,1);

points[19].setp(21,13,2);

points[20].setp(25,16,2.1);

points[21].setp(28,18,1.2);

points[22].setp(5,12,1.9);

points[23].setp(25,7,1.6);

points[24].setp(9,20,1.2);

points[25].setp(9,15,1.5);

points[26].setp(0,0,0);

double cost=0;

for(int n=0;n<5;n++)

{

int z=max();

int d=explore1(points[z]);

cout<<"第"<<n+1<<"条路线:"<<'\n';

cout<<points[z].x<<'\t'<<points[z].y<<'\t'<<points[z].t<<'\n';

point h=points[d];

int e=explore2(h,points[z]);

cout<<h.x<<'\t'<<h.y<<'\t'<<h.t<<'\n';

point j=points[e];

int f=explore3(j,h,points[z]);

cout<<j.x<<'\t'<<j.y<<'\t'<<j.t<<'\n';

point p=points[f];

cout<<p.x<<'\t'<<p.y<<'\t'<<p.t<<'\n';

cost+=result(points[z],h,j,p);

points[z].setp(0,0,0);

points[d].setp(0,0,0);

points[e].setp(0,0,0);

points[f].setp(0,0,0);

}

cout<<"总花费:"<<cost<<'\n';

cout<<"剩余点为:"<<'\n';

for(int s=0;s<27;s++)

{

if(points[s].x+points[s].y+points[s].t==0)

continue;

else

cout<<points[s].x<<'\t'<<points[s].y<<'\t'<<points[s].t<<'\n';

}

}

}
...全文

相关推荐

评论 49
收藏 已收藏
分享
返回顶部
sourcecodeoflinux
C++ 语言 65,214 成员 250,514 内容