爱嘉牛LA

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012年10月16日

摘要: 算法分析:设list是含有n个不同字符的字符串,perm(list,k-1,n)为list[0]~list[k-1]的所有全排列,perm(list,k,n)为list[0]~list[k]的全排列,perm(list,k-1,n)处理的字符个数比perm(list,k,n)处理的的字符少一个,假设perm(list,k-1,n)可求,对于list[k]位置,可以取list[0]~list[k]的任何值,再组合per(list,k-1,n),这得到perm(list,k,n).View Code #include int num=0;inline void Swap(char *a, char 阅读全文
posted @ 2012-10-16 18:35 爱嘉牛LA 阅读(155) 评论(0) 推荐(0) 编辑

摘要: 问题:在2^k*2^k个方格组成的棋盘中,若恰有一个方格与其他方格不同,称该方格为一个特殊方格,且称该棋盘为一特殊棋盘。思路:显然特殊在棋盘上出现的位置有4^k中情况。因而对任何K>=0,有4^k中不同的特殊棋盘。当k>0时,将2k×2k的棋盘分成4个2k-1×2k-1的子棋盘。特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘无特殊方格。为了将这3个无特殊方格的子棋盘转化为特殊棋盘,我们可以用一个L型骨牌覆盖这 3个较小棋盘的汇合处,这3个子棋盘上被L型骨牌覆盖的方格就成为该棋盘上的特殊方格,从而将问题转化为4个较小规模的棋盘覆盖问题。递归地使用这种分割,知道 阅读全文
posted @ 2012-10-16 18:33 爱嘉牛LA 阅读(272) 评论(0) 推荐(0) 编辑