最近找工作闲来无事,看到http://topic.youkuaiyun.com/t/20021206/23/1239072.html问题。
就编了个程序解决这个问题。
三只母鸡,三只小鸡在河东岸,一条小舟每次最多载两只鸡(大小不论)。
条件:
1、母鸡都会划船。
2、只有一只小鸡会划船,其余两只不会。
3、当小鸡母亲不在身边时,其余母鸡就会啄死这只小鸡。
此题目转自http://topic.youkuaiyun.com/t/20021206/23/1239072.html
一个解读是,船上和岸上是不同地方。
程序采用回溯法。在东岸上船尽量上两只鸡。在西岸尽量只上一只鸡。
一下代码在VC6中运行。
头文件 ChickRiver.h
文件ChickRiver.cpp
结果:
succeed cross river and
step=0
EAST:id=0 BIG, id=1 SMALL, id=2 BIG, id=3 SMALL, id=4 BIG, id=5 SMALL,
BOAT:
WEST:
boat in east
===================
step=1
EAST:id=2 BIG, id=3 SMALL, id=4 BIG, id=5 SMALL,
BOAT:id=0 BIG, id=1 SMALL,
WEST:
boat in river to west
===================
step=2
EAST:id=2 BIG, id=3 SMALL, id=4 BIG, id=5 SMALL,
BOAT:
WEST:id=0 BIG, id=1 SMALL,
boat in west
===================
step=3
EAST:id=2 BIG, id=3 SMALL, id=4 BIG, id=5 SMALL,
BOAT:id=0 BIG,
WEST:id=1 SMALL,
boat in river to east
===================
step=4
EAST:id=0 BIG, id=2 BIG, id=3 SMALL, id=4 BIG, id=5 SMALL,
BOAT:
WEST:id=1 SMALL,
boat in east
===================
step=5
EAST:id=0 BIG, id=4 BIG, id=5 SMALL,
BOAT:id=2 BIG, id=3 SMALL,
WEST:id=1 SMALL,
boat in river to west
===================
step=6
EAST:id=0 BIG, id=4 BIG, id=5 SMALL,
BOAT:id=2 BIG,
WEST:id=1 SMALL, id=3 SMALL,
boat in west
===================
step=7
EAST:id=0 BIG, id=4 BIG, id=5 SMALL,
BOAT:id=2 BIG,
WEST:id=1 SMALL, id=3 SMALL,
boat in river to east
===================
step=8
EAST:id=0 BIG, id=2 BIG, id=4 BIG, id=5 SMALL,
BOAT:
WEST:id=1 SMALL, id=3 SMALL,
boat in east
===================
step=9
EAST:id=4 BIG, id=5 SMALL,
BOAT:id=0 BIG, id=2 BIG,
WEST:id=1 SMALL, id=3 SMALL,
boat in river to west
===================
step=10
EAST:id=4 BIG, id=5 SMALL,
BOAT:
WEST:id=0 BIG, id=1 SMALL, id=2 BIG, id=3 SMALL,
boat in west
===================
step=11
EAST:id=4 BIG, id=5 SMALL,
BOAT:id=1 SMALL,
WEST:id=0 BIG, id=2 BIG, id=3 SMALL,
boat in river to east
===================
step=12
EAST:id=4 BIG, id=5 SMALL,
BOAT:id=1 SMALL,
WEST:id=0 BIG, id=2 BIG, id=3 SMALL,
boat in east
===================
step=13
EAST:id=4 BIG, id=5 SMALL,
BOAT:id=1 SMALL,
WEST:id=0 BIG, id=2 BIG, id=3 SMALL,
boat in river to west
===================
step=14
EAST:id=4 BIG, id=5 SMALL,
BOAT:id=1 SMALL,
WEST:id=0 BIG, id=2 BIG, id=3 SMALL,
boat in west
===================
step=15
EAST:id=4 BIG, id=5 SMALL,
BOAT:id=0 BIG, id=1 SMALL,
WEST:id=2 BIG, id=3 SMALL,
boat in river to east
===================
step=16
EAST:id=0 BIG, id=1 SMALL, id=4 BIG, id=5 SMALL,
BOAT:
WEST:id=2 BIG, id=3 SMALL,
boat in east
===================
step=17
EAST:id=1 SMALL, id=5 SMALL,
BOAT:id=0 BIG, id=4 BIG,
WEST:id=2 BIG, id=3 SMALL,
boat in river to west
===================
step=18
EAST:id=1 SMALL, id=5 SMALL,
BOAT:
WEST:id=0 BIG, id=2 BIG, id=3 SMALL, id=4 BIG,
boat in west
===================
step=19
EAST:id=1 SMALL, id=5 SMALL,
BOAT:id=0 BIG,
WEST:id=2 BIG, id=3 SMALL, id=4 BIG,
boat in river to east
===================
step=20
EAST:id=1 SMALL, id=5 SMALL,
BOAT:id=0 BIG,
WEST:id=2 BIG, id=3 SMALL, id=4 BIG,
boat in east
===================
step=21
EAST:id=5 SMALL,
BOAT:id=0 BIG, id=1 SMALL,
WEST:id=2 BIG, id=3 SMALL, id=4 BIG,
boat in river to west
===================
step=22
EAST:id=5 SMALL,
BOAT:
WEST:id=0 BIG, id=1 SMALL, id=2 BIG, id=3 SMALL, id=4 BIG,
boat in west
===================
step=23
EAST:id=5 SMALL,
BOAT:id=1 SMALL,
WEST:id=0 BIG, id=2 BIG, id=3 SMALL, id=4 BIG,
boat in river to east
===================
step=24
EAST:id=1 SMALL, id=5 SMALL,
BOAT:
WEST:id=0 BIG, id=2 BIG, id=3 SMALL, id=4 BIG,
boat in east
===================
step=25
EAST:
BOAT:id=1 SMALL, id=5 SMALL,
WEST:id=0 BIG, id=2 BIG, id=3 SMALL, id=4 BIG,
boat in river to west
===================
step=26
EAST:
BOAT:
WEST:id=0 BIG, id=1 SMALL, id=2 BIG, id=3 SMALL, id=4 BIG, id=5 SMALL,
boat in west
===================