Visitors hit counter dreamweaver
上一页 1 2 3 4 5 6 7 8 9 ··· 26 下一页
摘要: 有些经典的算法,我们应该做到信手捏来。一看到某个经典的算法,脑子里马上要想到要怎么解决,最好还要马上动手把他时间出来,不要怕做重复的工作!这就是我以后我要的!信手捏来。随时准备着实现算法!冒泡排序:每次从起始位置开始(j=0),分别比较arr[j]与arr[j+1],若不是降序,则交换位置。这样每轮下来,就可以得到本轮中的最小,放在相应的位置。其实这个算法的关键在于循环的实现,因为每次都可以得此一个最小的,那么下次就不用再对它进行比较了。所以外层循环i每次减少1,可以用来控制循环的范围,内层循环用来控制每次比较。因此冒泡排序总的平均时间复杂度为O(n2)。#include <stdio. 阅读全文
posted @ 2013-06-15 13:48 Jason Damon 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。(出自维基百科)平均时间复杂度Conceptually ,归并算法的基本步骤如下所示: 1)使用递归(recursion)方法把未排序的序列分成n个子序列,每个子序列只包含一个元素(一个元素被认为是有序的); 2)使用归并操作重复合并子序列产生新的序列,直到只剩下一个序列,那么这个序列就是有序的。归并操作(merge) ,也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。归并操作算法描述归并操作的过程如下: 阅读全文
posted @ 2013-06-15 12:35 Jason Damon 阅读(664) 评论(0) 推荐(1) 编辑
摘要: 问题描述在一个2^k×2^k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。解题思路分析:当k>0时,将2k×2k棋盘分割为4个2^k-1×2^k-1 子棋盘(a)所示。特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘中无特殊方格。为了将这3个无特殊方格的子棋盘转化为特殊棋盘,可以用一个L型骨牌覆盖这3个较小棋盘的会合处,如 (b)所示,从而将原问题转化为4个较小规模的棋盘覆盖问题。 阅读全文
posted @ 2013-06-14 22:32 Jason Damon 阅读(22828) 评论(5) 推荐(0) 编辑
摘要: exec+函数已经看过无数遍了,但是还是没有真正的实践过。今天正在要用到了,但是却不能正确使用,所以今晚回来再次认真的把它看了看。现在基本明白了,也会用了。关于这个函数族的介绍一抓一大把。我也不写了。但是看到一篇写得还不错的,把它记下来。http://qing.blog.sina.com.cn/tj/80dd113833001aqb.html 阅读全文
posted @ 2013-06-13 20:47 Jason Damon 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 今天开始开始深入的学习协议的相关知识。本科学的是网络工程,但是我却没有把协议学好,非常后悔!现在要趁大学还没结束,赶紧好好的补补! 今天的学习内容都是看小坦克的相关博文,他写得非常详细,排版也非常好,是写技术博客的模范啊!HTTP协议:http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html#2703323wireshark使用和TCP三次握手:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html这里还有一篇前辈写的一篇关于如何学习协议的文章,非... 阅读全文
posted @ 2013-06-12 21:41 Jason Damon 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 本次实验都是基于《灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术》实现端口绑定shellcode有下面几个步骤:(1) 创建一个TCP套接字;(2) 将该套接字绑定到攻击者指定的端口,这个端口通常会被硬编码到shellcode中;(3) 让该套接字成为侦听套接字;(4) 接受新连接;(5) 将新接受的套接字复制到stdin、stdout和stderr上;(6) 创一个新的命令shell进程(它将通过这个新套接字接受输入数据并发送输出结果);port_bind_asm.asmBITS 33section .textglobal _start_start:xor eax,eax.. 阅读全文
posted @ 2013-06-02 16:53 Jason Damon 阅读(2614) 评论(3) 推荐(0) 编辑
摘要: 二分查找时在给定已按升序排好序的n个元素a[0:n-1],用折半查找法在从这n个元素中找出一特定元素x,时间复杂性为O(logn)。 具体实现如下://二分查找static int binarySearch(int []a, int x, int n){ int left = 0,right = n-1; int middle; while (left <= right) { middle = (left+right)/2; if (x == a[middle]) return middle; if (x > a[mid... 阅读全文
posted @ 2013-06-01 22:07 Jason Damon 阅读(3607) 评论(0) 推荐(1) 编辑
摘要: 题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。解题思路:首先,要找的肯定是小于等于n/2+1的数。那么我们就可以从n/2+1开始向下每个数递归寻找,如果找到合适的情况,那么久输出即可。递归的时候,每次递归都是向下减一即可。代码://输入一个正数n,输出所有和为n连续正数序列。#include <stdio.h>int Sum(int n,int m);int main(){ int n,ret,i; scanf("%d",&n); for (i 阅读全文
posted @ 2013-05-29 16:01 Jason Damon 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 题目描述:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。解题思路:这是一道典型的用递归求解的题目。我们可以这样考虑问题,当只有一级台阶时,那么久只有一种跳法;当有两级台阶时,那么就会有两种跳法:一次跳一级或一次跳两级。当n>2时,那么我们就以用第一次跳时就可以跳一级或者两级,于是就有:f(n)=f(n-1)+f(n-2)。这样递归的公式就出来的,马上就可以用递归的方法来解决。但是递归的方式占用栈的空间是按照递归深度的级数递增的,所以递归只能求级数比较少的情况。代码://跳台阶#include <stdio.h>int Sta 阅读全文
posted @ 2013-05-29 15:29 Jason Damon 阅读(4167) 评论(0) 推荐(1) 编辑
摘要: 问题描述:将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。正整数n的这种表示称为正整数n的划分。问题1:输出整数n的所有可能的划分,如:输入:6输出: 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+1+1,2+1+1+1+1; 1+1+1+1+1+1。我的思路:这种问题已经遇到过很多了,递归搜索所有可能的情况,同时为了记录下每一步的情况,那么就要用到一个数组mark来存储每一步的数,然后递归同时要传递递归的深度k。还有个问题就是递归下一个数的时候,因为是递减的排列的。所以我们还必须记录下... 阅读全文
posted @ 2013-05-29 14:35 Jason Damon 阅读(3611) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 26 下一页