求一java算法的思路

来源:百度知道 编辑:UC知道 时间:2024/09/28 11:19:40
要求是:有n个点,证明是否有n-1个组合符合我们的要求。为了简化我就记做有8个点(1,2,3,4,5,6,7,8),一一对应相连,形成(1,2)(3,4)(5,6)(7,8)或(1,5)(2,6)(3,8)(4,7)等等,这里(1,2)和(2,1)是相同的。然后相互比较,把(1,2)(3,4)(5,6)(7,8)作为基准。比较的办法是这样的,比如:a:(1,2)(3,4)(5,6)(7,8) b:(1,5)(2,6)(3,8)(4,7).从a组开始,a组的1是和2相连的,得到2,然后根据2找到在b组中相连得数是6,再回到a组中找到和6相连得数是5,在b组中和5相连的是1,回到了起点数,可是还有其他3,4啥的还没有访问到,就说明b数组不符合要求。符合要求的是最后把所有的数都访问一遍,不能有重复的,最后回到起始的点。要找到n-1个这样的数据。

简单的说一下思路,把第一个数拿出来a1,因为每次都是从他开始从他结束。其余的n-1个数排列组合一下,排列成a2',a3',....an'.那么两组数据就已经被决定出来了。a组里面就是(a1,a2')(a3',a4')....b组里(a2',a3')...就出来了。所以我感觉有(n-1)!个这样的数据。不知道对不对,嘻嘻!想得太简单了?给我加点分帮你把代码写出来吧!

你去北大acm问问 有人答的 怕难想咯
老了 都忘光了