随笔分类 -  闲散

没有具体的分类,随便放些可能以后会看的东西
用格雷码的方法解决汉诺塔问题
摘要:说到汉诺塔问题,首先想到的是最经典的递归解法。今天看到求格雷码的方法,里面提到可以观察格雷码每一次改变的位数和汉诺塔每次移动的盘子的编号,从而产生一种不需要递归和堆栈的汉诺塔解法。 在生成格雷码的算法中,依次改变的位数是最低位和从右往左数第一个1所在位的左一位,对应汉诺塔的盘子就是最小的盘子和中间某个盘子。最小的盘子有两种可能的移动方案,其他的盘子只有一种可能。对于最小盘子移动到的柱子的解决方法是,根据观察,当盘子总数是奇数时,最小盘子的位置依次是“3->2->1->3->2->1...”;当总数是偶数时,这个顺序是“2->3->1->2-> 阅读全文

posted @ 2012-06-11 16:52 waruzhi 阅读(1804) 评论(0) 推荐(0)

快排
摘要:过了这么长时间,又自己写了回快排,发现没有当时想的那么难以理解,看来老师的讲述方式有问题啊。。。代码贴这里,以后没准会看看#include<iostream>using namespace std;int num[10] = {14, 88, 35, 9, 26, 71, 53, 3, 10, 48};int partition(int N[], int l, int r){ if(l == r) return l; int temp = N[r]; int i,j,t; i = l - 1; for(j = l; j <= r-1; j++){ ... 阅读全文

posted @ 2012-02-13 17:32 waruzhi 阅读(253) 评论(0) 推荐(0)

导航