算法设计与分析课程机试题

         算法课要结束了,属于考查课。

           最后一节上机课了,还有最后一节理论课,估计是要笔试了....

           上机课出了个题目,给定一个n值,即一个棋盘的大小,n*n的正方形网格棋盘,比如n=4时,即边长为4,棋盘上落子为5*5个位置,现在规定,要从左下角那个点走到右上角那个点,并且只能向右走或者向上走。左下角到右上角线把棋盘分为了两部分,左上部分不可走(这条对角线可以走),右下角这个点不能走,边长为偶数时,正中央这个点不可走,那么,左下角到右上角的路径共有几条?

            如图表示的是n=4的时候的情况:

                         

算法设计与分析课程机试题_第1张图片

            如何求解呢? 当时因为刚刚用回溯法做了个0-1背包问题,当时就发来了csdn,我还说了我那个背包问题效率很低:

http://download.csdn.net/detail/xiaoyu_93/5301619

然后,这个题目用我写背包问题的方法则刚好合适,所以很快就写完了,一小半节课就写完给老师看完然后走了.全班第一个解决这个题的人....

每在一个点上面,它都能往右边或者上面移动,如果越界或者那个点被标记为不可走,则不做任何事,否则继续前进,知道到了终点,则路径就多了一条,一直回溯深度遍历,直到完毕,实现起来还是很简单的,不过效率方面就没做考虑了.......

解法下载地址:

http://download.csdn.net/detail/xiaoyu_93/5310589

你可能感兴趣的:(java,搜索)