做GCJ 2011 Qualification Round中的C题遇到的,以前居然没有接触过,囧。。。
组合算法有三个,这里给出了递归和回溯的方法,我照搬了一下,不过改成了C实现。。。
回溯法貌似挺慢的,做题时有个大数据的test,结果跑了6,7分钟都没跑完,这里又给出了一个高效的排列组合算法,我把组合实现了,排列我觉得不是很高效,暂时没写。。。
这里有全排列的递归算法,我给搬过来了,做swap时本想用异或实现的,可是注意到i,j可能指向同一个值,结果异或之后变成了0,无奈改成普通的交换方式
还不太完整,有机会补全。。。