日期:2014-05-20  浏览次数:20797 次

算法设计
谁能帮我设计一个算法:A,B,C,D 4个人各有 5,6,7,8份试卷。现在要将手中的试卷交换修改。但是本人不能修改自己手中的试卷。
而且修改的试卷份数必须和你原来持有的试卷份数相同。

------解决方案--------------------
这题还是有点难度。
大概的想法类似8皇后问题的回溯算法:
首先,卷子上交,统合在一起。
然后,第N个人(N:A<--->D)取卷子。如果没有合理取法(不得不取属于自己的圈子)那么N=N-1。
最后一个人得到一个适当的解之后,放弃手上的卷子,并且和倒数第二个人换一份不输入D的卷子,循环直到换完,然后回溯到前一个人,并尝试是否有解。


------解决方案--------------------
1,建立一个堆栈.一个数组.
2,从A,B,C,D中任意抽取一个老师,将他的试卷入栈.
3,建立一个随机数产生器,从剩下的三个老师的试卷中依次随机抽取试卷.
4,将入栈的试卷出栈,转入数组中.参与下次的试卷抽取.
5,剩下的三个老师重复1,2,3,4.只到有结果为止.