导航:首页 > 旅游旅行 > 旅行家算法

旅行家算法

发布时间:2021-03-23 09:29:28

1. 旅行家算法代码 ABCDE 5个点的

我这有递归版的,有兴趣的话自己改下吧。城市多了递归的效率低

Class Cities

{

privateint[][]cities;//各城市表示为(X,Y)X,Y为0到99之间的值

privateint[]shortestPath;//保存最短路程对应的经历顺序

privateintnum;//保存N(城市个数)

privatelongshortestLength=100000000;//N个城市遍历时可能最大路程

privatelonggetLength(int[]tPath){...}//计算以tPath为经历顺序的路程

publicCities(intn)//构造n个城市的坐标,假设为0到99之间的随机数

{

...

}

publicint[]getShortestPath()//获得最短路径

{

int[]tempPath=newint[num];

shortestPath=newint[num];

int[]citiesToured=newint[num];//保存第I个城市是否已经经历

intcitiesNum=0;//已经经历城市的个数

for(inti=0;i<num;i++)

citiesToured[i]=0;

goThrough(tempPath,citiesNum,citiesToured);//遍历各城市

for(inti=0;i<num;i++)

tempPath[i]=shortestPath[i];//得到遍历顺序

returntempPath;//返回结果

}

privatevoidgoThrough(int[]tPath,intcNum,int[]cToured)//遍历N个城市

{

if(cNum==0)//无经历城市时,选择第1个城市

{

cNum++;

tPath[0]=0;

cToured[0]=1;

goThrough(tPath,cNum,cToured);

}

elseif(cNum==num)//各个城市已经经历,结束

{

longtempLength=getLength(tPath);//计算此经历顺序所走的路程

if(tempLength<shortestLength)//比较路程

{

shortestLength=tempLength;//更新最短路程及其经历顺序

for(inti=0;i<num;i++)

shortestPath[i]=tPath[i];

}

}

else

{

for(inti=0;i<num;i++)

if(cToured[i]!=1)//选择未经历的城市

{

cToured[i]=1;//加入已经历城市

tPath[cNum]=i;

cNum++;//已经历城市个数+1

goThrough(tPath,cNum,cToured);//调用下一层

cToured[i]=0;//恢复本层的状态:

cNum--;//已经历城市及个数

}//Endifinfor(i)

}//Endelse

}

privatelonggetLength(int[]tPath)//以指定顺序计算遍历路程

{

longlength=0;//路程

intnowPoint=0;//当前城市,第一次取0

for(inti=1;i<num;i++)

{

intj=tPath[i];

length+=(long)Math.sqrt((cities[j][0]-cities[nowPoint][0])*(cities[j][0]-cities[nowPoint][0])+(cities[j][1]-cities[nowPoint][1])*(cities[j][1]-cities[nowPoint][1]));//加上当前、下一城市间的距离

nowPoint=j;//更新当前城市

}

length+=(long)Math.sqrt((cities[0][0]-cities[nowPoint][0])*(cities[0][0]-cities[nowPoint][0])+(cities[0][1]-cities[nowPoint][1])*(cities[0][1]-cities[nowPoint][1]));//加上首尾城市间的距离

return length;

}

}//Cities类定义结束

2. 生命密码分析三角形外面的怎么算

生命密码作为一种娱乐性质的性格预测,可以在闲暇时玩一玩放松身心,而生命密码分析三角形的算法如下:

1、确定阳历出生日,因为生命密码学说来源于西方,而西方只有阳历没有阴历。你的生日包含了你出生时的空间,那一刻,各大行星的运转与你之间存在特殊的磁场。

2、确定阳历生日后,将年月日的每位数字相加,得到的总数如果大于9,则再将数字相加,得出最后一个各位数字(生命密码只有1-9),这个数字就是你的生命密码主性格数啦

(2)旅行家算法扩展阅读:

生命密码各个数字的含义(仅供娱乐)

1、天生的领导人,有本事,喜标新立异,满脑子新点子,总在发掘新事务,比较主观及冲动价值观,是非分明。

2、天生具有敏锐分析及观察的能力,爱批评、擅指正,具男女双重性格,情感丰富,为人温和亲切,天生依赖。

3、聪明、天赋异禀的艺术家,充满理想,立于不败之地。沟通、学习力强,太理想化,不够实际。

4、擅长看穿事情真相,有条理,给人安全感,擅于组织与生产,务实,稳定,可靠,天生缺乏安全感,过于顽固,不喜欢改变。

5、拥有演说与促销的天分,崇尚自由及品味,喜欢新奇。

6、乐于付出及承担,具有丰富的爱心,勇于分担他人困难,敢于面对自己的困难,凡事应量力而为。

7、直觉敏锐,精于研究、调查,寻找事实的真相,能力强。除非百分百的肯定,否则对答案难满意。追求至高无上的真理及精神,多疑,较懒惰。

8、天生领导人,善于开发,资质聪明,独具慧眼,具建设力,相信白手起家,善用投机天分坐拥权力。

9、想象与人道(天使、服务人群)。擅长服务、娱乐,照顾及帮助他人,拥有常人无法想象的能量,与宗教有缘分。

3. C++算法,动态规划法实现TSP问题

c++listmatrixiteratoriostream算法
[cpp] view plainprint?

#include
#include
using namespace std ;
typedef list<</SPAN>int> LISTINT;
LISTINT listAnother;
LISTINT list_result;
int d[4][4]={{-1,3,6,7},{2,-1,8,6},{7,3,-1,5,},{7,3,7,-1}}; //路径权值
int matrix_length=4;
int getPath(int n,LISTINT list_org)
{
LISTINT::iterator i;
int minValue;
if(n==1)
{
i=list_org.begin();
minValue= d[*i-1][0];
if(list_org.size()==matrix_length-1)
{
list_result=list_org;
}
}
else
{
int temp;
i=list_org.begin();
temp=*i;
list_org.erase(i);
i=list_org.begin();
minValue=d[temp-1][*(i)-1]+getPath(n-1,list_org);
if(list_org.size()==matrix_length-1)
{
list_result=list_org;
}
for(int j=2;j
{
i=list_org.begin();
for(int k=1;k
{
i++;
}
int tempvalue=*i;
list_org.erase(i);
list_org.push_front(tempvalue);
i=list_org.begin();
tempvalue=d[temp-1][*(i)-1]+getPath(n-1,list_org);
if(tempvalue
{
if(list_org.size()==matrix_length-1)
{
list_result=list_org;
}
minValue=tempvalue;
}
}
}
return minValue;
}
int main(int argc, char* argv[])
{
LISTINT list_org;
LISTINT::iterator h;
list_org.push_front(4);
list_org.push_front(3);
list_org.push_front(2);
list_org.push_front(1);
cout<<"旅行商问题动态规划算法"<<endl;
cout<<"路线长度的矩阵表示如下 (-1表示无限大)"<<endl;
for(int j=0;j
cout<<endl;
for(int k=0;k
cout<<" "<<d[j][k];
}
}
cout<<endl;
cout<<"计算结果:"<<getPath(4,list_org)<<endl;
list_result.push_front(1);
list_result.push_back(1);
cout<<"要走的路径:---->:";
for (h = list_result.begin(); h != list_result.end(); ++h)
cout << *h << " ";
cout << endl;
int i;
cin>>i;
return 0;
}

4. 旅行者一号的速度多少是34万公里每秒吗

^解一下呗
将地球绕太阳近似为匀速圆周运动,有
GMm/r^2=F=mv^2/r
其中r为日地距离,八版分钟光程,约权1.5×10的11次方m/s
M为太阳质量,即2×10的30次方kg
G为引力常量,约6×10的负11次方(单位我就不写了)
计算得,地球速度v约30千米每秒,选C
(还有另一种简单算法)
绕日周期为一年,折合为秒很容易
即T易得,而vT=2πr,也可解得答案为C,很简单

5. 数字的来历

数字的起源有两种说法:

1、数字起源于我国,史书上说中天皇君兄弟十三人,号曰天灵,其中一人发明了数字,继而又发明了天干、地支。发明数字:零、一、二、三、四、五、六、七、八、九、十、廿、卅、卌、百、千、万。

2、亦有另一种说法,数字是发源于古印度,并不是阿拉伯人发明创造的。数字后来被阿拉伯人用于经商而掌握,经改进,并传到了西方。

(5)旅行家算法扩展阅读:

1、阿拉伯数字传入欧洲

十个数字符号后来由阿拉伯人传入欧洲,被欧洲人误称为阿拉伯数字。由于采用计数的十进位法,加上阿拉伯数字本身笔画简单,写起来方便,看起来清楚,特别是用来笔算时,演算很便利。因此随着历史的发展,阿拉伯数字逐渐在各国流行起来,成为世界各国通用的数字。

2、阿拉伯数字传入中国

阿拉伯数字传入我国,大约是13到14世纪。由于我国古代有一种数字叫“算筹”,写起来比较方便,所以阿拉伯数字当时在我国没有得到及时的推广运用。

20世纪初,随着我国对外国数学成就的吸收和引进,阿拉伯数字在我国才开始慢慢使用,阿拉伯数字在我国推广使用才有100多年的历史。阿拉伯数字已成为人们学习、生活和交往中最常用的数字了。

6. matlab蚁群算法旅行者问题中,蚂蚁数目多了,搜索的随机性为什么会减少

明明写的是蚂蚁数量增加,随机性变强了啊,你怎么说是减少了呢。

7. 现在技术能计算出旅行者号的准确位置吗

发个信号个旅行者号再等旅行者号传回信号,把这之间所花的时间除以2再乘以光速就差不多了,旅行者号的轨道是经过精密计算的,不然就不可能超太阳系外的银河中心前进了,用距离再综合一下大概位置是能出来的,虽然不可能很准确的,毕竟它的速度已经到达了第三宇宙速度。

8. 关于算法分析与设计的题目,请各位高高手帮帮忙.小女子感激不尽

数据结构没学好吧。

9. 旅行家的预算

看到题目后,很容易想到递推,但是又不知道具体怎样做。我们可以先分析一下题目,用手工算
几个数据,看能不能受到启发(注意:这是一个很重要的思路!!)
例如可以先分析样例数据(这是理解题意思必须的,因为样例不会错)
算了一下吗?好了,我问你,如果你是司机,你会怎么办呢?
尽量买便宜的,贵的就买“刚刚可以到下一站”?对不对呢?
举出反例很容易,但是我们不能轻易放弃这个思路,可以接着想下去。
不能保证全局最优,我们就试着改进我们的方法。
事实上,要用的油是确定的(D1/D2),价钱最便宜的油的站Q的油显然应该多买,至少:

到达Q这个油站时汽车剩油不为0的方案一定不是最优的。

这是因为,如果剩下P升油,显然不如当初少买P升,改在Q这里买P升划算!(Q最便宜嘛!)
哈哈,有一点思路了吧!就是把较优解改进为最优解啦!

算法如下:
每次都假装装满油,用的时候先用便宜的,因为把贵的留在后面“反悔”(被替换成更便宜的油)不是更爽吗?!
这样计算费用时只考虑真正使用的,假装装满时就不要再算一次了。你看看程序中是不是只有两处修改了cost?
我很懒,因此就默认油站是按离起点由近及远给出的。

输入后面是先把油费由贵到便宜排序,第i贵的站是place[i],以便选择。
下面的程序中主要部分是那个循环,它做了以下事情:
1)假装装满油:gas[i]:=c-nowp; nowp是现在有的油,gas[i]是车上第i站的油的体积。
2)替换:现有的油如果有比当前站(第i站)贵的,改为i号油:gas[i]:=gas[i]+gas[j]; gas[j]:=0;
3)行驶:依次选择最便宜的油行驶路程distance,就是个循环for j:=n downto 0

经过这样分析,程序是不难写出了,程序长一点,是为了写得更易懂。
基础较好的同学也可以用优先队列(例如用堆来实现)来进行替换和使用油,这里只用了最简单的方法模拟,
效率并不高。
program FenQuPrepare_Day4_Task3_FQ99P3;
type
real=extended;
const
fn_in='input.txt';
maxn=100;
var
ans,c,d1,d2:real;
can:boolean;
n:Integer;
d:array[0..maxn] of real;
p:array[0..maxn] of real;

procere init;
var s:string;
i:Integer;
begin
assign(input,fn_in);
reset(input);
readln(d1,c,d2,p[0],n);
for i:=1 to n do readln(d[i],p[i]);
end;

procere main;
var cur,i,j:Integer;
rest,min:real;
begin
can:=true;
for i:=1 to n do
if (d[i]-d[i-1])>c*d2 then can:=false;
if d1-d[n]>c*d2 then can:=false;
if not can then exit;
rest:=0;
ans:=0;
for cur:=0 to n do
begin
min:=1e10;
i:=cur;
while (i<=n) and ((d[i]-d[cur])<=c*d2) do
begin
if p[i]<min then
begin
min:=p[i];
j:=i;
end;
inc(i);
end;
if j=cur then
begin
if c*d2>(d1-d[cur]) then
begin
if rest*d2<d1-d[cur] then
begin
ans:=ans+p[cur]*((d1-d[cur])/d2-rest);
rest:=(d1-d[cur])/d2;
end;
end else
begin
ans:=ans+p[cur]*(c-rest);
rest:=c;
end
end else
begin
if rest*d2<d[j]-d[cur] then
begin
ans:=ans+p[cur]*((d[j]-d[cur])/d2-rest);
rest:=(d[j]-d[cur])/d2;
end;
end;
rest:=rest-(d[cur+1]-d[cur])/d2;
end;
end;

procere out;
begin
if can then
begin
ans:=round(ans*100)/100;
writeln(ans:0:2);
end else writeln('No solution');
end;

begin
init;
main;
out;
end.

10. NOIP1999 提高组 旅行家的预算 dp最后一个测试点老是过不了

抱歉,你用的动态规划的算法不正确。

因为我从你的代码里发现,每到一个加油站,你只考虑了两种选择选择加油(并且正好保证能开到今后遇到的某一个加油站)或者不加油。请问,我这样理解对不对?如果我没有说错的话,你这个思路就有问题了。

我把你的代码改成了贪心算法,在oj上通过了。

#include<stdio.h>
#defineMAX12000
intmain()
{
doubled1,c,d2,p0,d[MAX]={0},p[MAX]={0},m,f[MAX],s[MAX],fa,ft,sa;
intn,i,j,b,t;
scanf("%lf%lf%lf%lf%d",&d1,&c,&d2,&p0,&n);
d[n+1]=d1;
p[0]=p0;
for(i=1;i<=n;i++)
{
scanf("%lf%lf",&d[i],&p[i]);
}

m=0;
b=0;
t=0;
for(i=0;i<=n;i++)
{
sa=0;
fa=0;
ft=(d[i+1]-d[i])/d2;
if(ft>c)
{
printf("NoSolution ");
return0;
}
while(b<t)
{
if(p[i]<=s[t-1])
t--;
else
break;
}
while(b<t&&fa<ft)
{
fa+=f[b];
sa+=f[b]*s[b];
b++;
}
if(fa<ft)
{
sa+=(ft-fa)*p[i];
}
elseif(fa>ft)
{
b--;
f[b]=fa-ft;
sa-=f[b]*s[b];
}
m+=sa;
if(ft<c)
{
f[t]=c-ft;
s[t]=p[i];
t++;
}
}
printf("%.2lf ",m);
return0;
}
阅读全文

与旅行家算法相关的资料

热点内容
沈阳凯撒旅行社招聘 浏览:748
阳江海韵戴斯度假酒店 浏览:590
电动汽车技术政策 浏览:261
户外街舞垫子 浏览:491
fuso越野房车多少钱 浏览:913
京郊特色度假 浏览:724
山羊皮卡车 浏览:374
中国旅游安全问题 浏览:399
武汉新能源汽车销售 浏览:142
l怀化旅游攻略 浏览:897
车个性内饰 浏览:135
奔驰S级内饰改装 浏览:101
皮卡并线 浏览:398
皮卡堂食物 浏览:8
安徽安凯华夏汽车配件有限公司 浏览:547
东京到大阪旅游攻略 浏览:492
东风轿车价格 浏览:293
金希澈豪车 浏览:826
皮卡丘人气 浏览:924
峨秀湖国际度假区 浏览:932