(高难度问题)火车路线路查询的程序。
表结构:
YunXingQuFrom LuXian
北京 北京,徐州,蚌埠,南京,南京
重庆 重庆,重庆北,徐州,渠县,达州,宣汉,万源
。。。。。 。。。。 。。。。。。。。
比如我要从 北京 到 达州 ,可以从 徐州 转车。
这个程序好像好难写???
问题点数:100、回复次数:10Top
1 楼Johnyin(境由心生...)回复于 2005-01-20 18:37:34 得分 5
网状结构的遍历。
查查算法书吧,应该有介绍。Top
2 楼AllenTing(今天你GC了吗???)回复于 2005-01-20 18:41:54 得分 5
学习ingTop
3 楼jkjava(hhuuo)回复于 2005-01-20 18:48:25 得分 0
有代码吗???还不及看书啦。Top
4 楼tbmlh(成林)回复于 2005-01-20 19:01:26 得分 5
学习。Top
5 楼Johnyin(境由心生...)回复于 2005-01-20 19:24:28 得分 40
代码没有。
说个大概思路:
先一个数组将所有站名存起来
arrName[n]="北京" ......
然后用另一数组存关系:一站一站地存。
比如arrName[0]="北京",arrName[1]="徐州"
那么:
arrRelation[0][1]=1 arrRelation[1][0]=1
......
然后就是找路的算法了。
function FindWay(int iEnter,int iOut)
{
//先取出 arrRelation[iEnter][]=1 的
//再循环 判断里面有没有 iOut(第二维的维数)
//如果没有就继续深入找将 第二维换成第一维,再循环......
}
临时想的啊。可能不是最优。Top
6 楼webserv2(New life New job)回复于 2005-01-20 19:53:31 得分 5
网状结构的遍历
算法问题好像很难Top
7 楼webserv2(New life New job)回复于 2005-01-20 19:54:07 得分 5
关键是得出最优的结果!Top
8 楼xinyu1225(天道酬勤)回复于 2005-01-20 20:01:35 得分 5
upTop
9 楼bitsbird(一瓢 在路上...)回复于 2005-01-20 20:13:11 得分 30
Declare @temp varchar(1000)
Declare @Luxian varchar(1000)
create table #t(city varchar(30))
Select top 1 @Luxian=Luxian from a where YunXingQuFrom='北京'
Declare MyCur Cursor for
Select LuXian From a where '达州' in LuXian
Open MyCur
Fetch next from MyCur into @temp
while @@fetch_status=0
Begin
If Exists (Select 0 from dbo.GetRecords(@Luxian),@temp))
begin
Insert into #t (city) select * from dbo.GetRecords(@Luxian)
end
Fetch next from MyCur into @temp
end
close MyCur
deallocate MyCur
select * from #t
create function GetRecords(@str varchar(8000))
returns @Rec table (Record varchar(40))
as
begin
declare @s varchar(8000)
declare @r varchar(40)
declare @i int
set @s=@str
set @i=CHARINDEX(',',@s)
while @i>0
begin
set @r=left(@s,@i-1)
if not exists (select * from @Rec where record=@R)
insert @Rec values (@R)
set @s=right(@s,len(@s)-@i)
set @i=CHARINDEX(',',@s)
end
if len(@s)>0
if not exists (select * from @Rec where record=@s)
insert @Rec values (@s)
return
endTop
10 楼bitsbird(一瓢 在路上...)回复于 2005-01-20 20:18:42 得分 0
纠正一下
while @@fetch_status=0
Begin
If Exists (Select 0 from dbo.GetRecords(@Luxian) where Record in (@temp))
begin
Insert into #t (city) select * from dbo.GetRecords(@Luxian)
end
Top




