`
jiq408694711
  • 浏览: 33255 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论
文章列表
DP方式求解: #include <iostream> using namespace std; /** * 问题描述:两个字符串,求解他们的最长公共子序列,子序列不要求连续 * * 分析这个问题,我们可以发现有子结构,可以将X,Y两个字符串的最长公共子串 * 的问题转换成更小的子问题。而且这个问题的求解过程有重叠子问题。根据这两个 * 性质我们确定尝试用DP来解决。 * 首先定义状态,f(m,n),代表字符串X以Xm结尾的子串与字符串Y以Yn结尾的子串的 * 最长公共子序列。 * 如果Xm == Yn,那么问题转换成求解f(m-1,n-1),且f(m,n ...
#include <iostream> using namespace std; //为了方便,将a和b的长度固定下来,这样就不用动态创建数组了 #define M 6 #define N 3 int dp[M][N] = {0}; /** * 问题描述: 两个字符串如果可以根据添加,删除,修改一个字符串来变成另一个字符串,则 * 说这两个字符串距离为1. 现在给出两个字符串,求出他们之间的距离。 * abcehk和bdh的距离。 * 要将一个字符串变成另一个,这里假设将B变换成A,很明显这个问题有子结构。 * 要求f(m,n),即字符串A与字符串B的距离: ...
比如新建一个word,写了一行字,然后点击保存。 发生了什么?这个数据会不会马上写到磁盘上? 1 文件系统: 文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type)。 文件系统是一种用于向用户提供底层数据访问的机制。它将设备中的空间划分为特定大小的块(扇区),一般每块512字节。数据存储在这些块中,大小被修正为占用整数个块。由文件系统软件来负责将这些块组织为文件和目录,并记录哪些块被分配给了哪个文件,以及哪些块没有被使用。文件系统各式各样,如fat,ntfs,ext2,ext3等。 内核中文件系统会将虚拟文件系统中的 ...
参考:http://zhan.renren.com/seochina?gid=3602888497994264527&checked=true 1 域名到IP地址的转换: ·浏览器缓存 – 浏览器会缓存DNS记录一段时间。 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定 ...
=== .c === 预处理 -》.c (源文件) 编译-》.s/asm (汇编程序) 汇编-》.o/obj 目标程序(二进制文件) 链接-》.exe可执行程序 (二进制文件) (1) 为什么要生成汇编,而不是直接从源文件编译成机器指令(二进制代码)? 首先,汇编语言作为 ...
今天被北京XXX公司(著名广告投放公司)鄙视了。面试官是个中年男子,很帅气,虽然面试官人很好,但是还是让我心情不爽。 一进去就说先来个组成原理的题吧: CPU,主存,北桥,南桥,速度不一致,缓存之类的,这个很简 ...
#include <iostream> using namespace std; /** * 递归实现将二叉排序树BST转换成排序的双向链表。 * 递归左子树,将左子树的转换成的链表的尾节点和当前根节点连接, * 然后当前根节点更新尾转换好链表的尾节点。 递归右子树 */ typedef struct node{ int value; struct node *lchild; struct node *rchild; }NODE; NODE *createNode(int v){ NODE *p = (NODE *)malloc(sizeof(N ...
package someTest; class SSSuperClass{} class SSSubClass extends SSSuperClass{} public class TestDuplicate { public void function(Object o){ //方法1 System.out.print("Object\n"); } public void function(int[] array){ //方法2 System.out.print("int[] array\n") ...
DP的方式求解: #include <iostream> using namespace std; #define M 9 #define N 11 //如果动态传进m和n的话,数组lcs赋值只能通过指针,这样太麻烦 int lcs[M][N]; /** * 最长公共子串(LCS) * 状态转移方程: * f(i,j) = 0 a[i] != b[j] f(i-1,j-1)+1 a[i] == b[j] 其中f(i,j)表示串A以a[i]结尾与串B以b[j]结尾的最长公共子串 * 优化: 这里时间和空间都是O(M*N)。 * 注 ...
#include <iostream> using namespace std; /** * 给定一个序列,判断其是不是某个BST的后序遍历输出 * 思想: 根据在位于序列最后的根节点,将序列划分成两个part。 * 然后判断后半序列是否都比root大,如果不是,则返回false。(前半序列一定都比root小) * 如果当前序列满足BST左右子树两个part的性质,继续递归两个part。 */ bool judgepostorder(int *a, int n){ //注意边界条件 if(n ==0 || n == 1) return true; ...
#include <iostream> using namespace std; /** * 对链表进行原地排序 * 回忆数组归并最重要的就是:找到数组中点,以及归并两个有序数组。 * 类似地这里有两个关键点: * (1)找到链表的中间节点,用一快一慢两个指针往前走; * (2)归并两个已经排好序的链表,指向归并结果的指针总是变化的,所以需要返回一个指向归并好的链表的头指针; * (3)最后注意,将链表划分成两截的时候,还应该让前半部分的最后一个节点指向空(截断),这样递归各自部分就不需要还去 * 指明到哪个节点结束了。 */ typedef struc ...
/** * */ package innerClass; /** * 结论: * 静态环境中不能引用非静态域。 * 静态方法/嵌套类只能声明在静态的或者顶层结构中 * 非静态方法/内部类可以放置在任何位置,任何一层 * */ public class InnerClassAccess { private float f = 1.0f; //非静态字段 class InnerClassA{ //static void method(){}//静态方法只能声明在静态的或者顶层的结构里面 //static class TestA{} ...
#include <iostream> using namespace std; void testPointer(){ int a[] = {1,2,3,4,5}; int *p = a; //本身就是int型指针 // int *q = &a; //转换成int型指针 int *t = &a[0]; //本身就是int型指针 p++; // q++; t++; printf("*p:%d\n",*p); //2 // pr ...
#include<iostream> using namespace std; class A{ public: virtual ~A(){f();} virtual void f(){cout<<"This is A virtual"<<endl;} void g(){cout<<"This is A no-virtual"<<endl;} }; class B:public A{ public: ~B(){f();} virtual void f(){c ...
客户端: #include "apue.h" #include <netdb.h> #include <sys/socket.h> #include <fcntl.h> int main(void){ int c_fd; struct sockaddr_in s_addr; /*linux套接字地址需转化成通用sockaddr结构地址*/ char buf[MAXLINE] = "hello server!\n"; ...
Global site tag (gtag.js) - Google Analytics