求助:如何让方法判断最优解?比如开车从A-B地.可能有10条路,每条路的公里数不一样,路上可能还有路障之类的,
比如A--C--B
        A--D--B
        A--E--B
每次运行这个方法的时候都不一样,比如这一次运行时,C地可能有路障,通过时间更长之类的,所以这个时候方法把这路条的评分降低.
每次这个方法的结果都不一样,
是否让方法在运行时自己先默认运行这10条路的可能性,然后给出每一条路的评分.
最后方法选择最高的分数的路.这个是要怎么做到?我是刚学半年的新手.可能有些奇怪,求大佬解答

解决方案 »

  1.   

    你这些走法都是独立的啊,那可以不涉及最短路径问题
    假设你的评分依据是:路程长×比例系数,可以类似这样写/// <summary>
    /// 
    /// </summary>class scores
    {
        class roadCondition
        {
            public string roadName;
            public double roadLength;
            public double scale; //受阻系数
            public roadCondition(string p_name,double p_roadLength,double p_scale)
            {
                roadName = p_name;
                roadLength = p_roadLength;
                scale = p_scale;        }
        }    private List<roadCondition> roadList;    public void addRoad(string p_name,double p_roadLength, double p_scale)
        {
            if(roadList==null)
            {
                roadList = new List<roadCondition>();
            }
            roadList.Add(new roadCondition(p_name,p_roadLength,p_scale));    }    public void clearRoad()
        {
            if(roadList!=null)
            {
                roadList.Clear();
            }
        }    public string getBestRoad()
        {
            return roadList.OrderByDescending(r => r.roadLength * r.scale).FirstOrDefault().roadName;
        }
    }//计算
    scores theScore = new scores();
    theScore.addRoad("c", 100, 0.1);
    theScore.addRoad("d", 120, 0.08);
    theScore.addRoad("e", 80, 0.15);Response.Write(theScore.getBestRoad() + "<br />"); web下输出e,最佳是e路径