- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 汽车加油行驶问题
http://poj.org/problem?id=2431 Expedition/*n个加油站,,邮箱容量不限,,,,每个加油站可加的油量有限,,,求最少的加油次数因为邮箱容量不限,,,可以这样贪心,,,如果邮箱的油能到达下一站,,则直接到达下一站,,否则,,,从已经走过的加油站中选择油量最多的站加一次油*/#include#include#include#includ
2012-03-28 11:20:55 9255
原创 二分图的最大匹配
二分图指的是这样一种图,其所有顶点可以分成两个集合X和Y,其中X或Y中任意两个在同一集合中的点都不相连,所有的边关联在两个顶点中,恰好一个属于集合X,另一个属于集合Y。给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。图中包含边数最多的匹配称为图的最大匹配。 二分图的最大匹配有两种求法,第一种是最大流;第二种就是我现在要讲的匈牙利
2012-03-27 10:51:44 35873 8
原创 位压缩
http://ac.jobdu.com/problem.php?pid=1402 特殊的数#include#include#includeusing namespace std;#define MAX 1000001unsigned char hash[MAX/4]; //用两位来保存一个数字,所以这里是MAX/4,而不是MAX/8,如果是用一位来保存一个数字,那么数组的
2012-03-25 22:21:47 3656 3
原创 POJ1753 棋盘翻转(位压缩+广度优先搜索)
http://poj.org/problem?id=1753题目大意:有一个4*4的方格,每个方格中放一粒棋子,这个棋子一面是白色,一面是黑色。游戏规则为每次任选16颗中的一颗,把选中的这颗以及它四周的棋子一并反过来,当所有的棋子都是同一个颜色朝上时,游戏就完成了。现在给定一个初始状态,要求输出能够完成游戏所需翻转的最小次数,如果初始状态已经达到要求输出0。如果不可能完成游戏,输出Impo
2012-03-25 15:46:03 11507
原创 用位运算实现四则运算之加减乘除(用位运算求一个数的1/3)
听同学百度二面中,不准用四则运算操作符来实现四则运算。一想就想到了计算机组成原理上学过的。位运算的思想可以应用到很多地方,这里简单的总结一下用位运算来实现整数的四则运算。加法运算:int AddWithoutArithmetic(int num1,int num2){ if(num2==0) return num1;//没有进位的时候完成运算 int sum,carry; sum=
2012-03-24 14:35:17 21435 4
原创 根据树的两种遍历序列求第三种遍历序列
只知道先序序列和后序序列是无法求出唯一的树,所以不做讨论。#include#include#includeusing namespace std;struct BinaryTreeNode{ char c; BinaryTreeNode *lchild, *rchild; BinaryTreeNode() { lchild = NULL, rchild = NULL;
2012-03-24 11:37:47 4004 1
原创 最短路径Dijkstra(静态邻接表+优先队列模板)+ 记忆化搜索
这道题的解题步骤是这样的:(1)用Dijkstra求出每个点到house(也就是2号点)的最短距离,我是记录在数组dist[]中;(2)我们要求的是office(1号点)到house(或2——>1)最短路径的条数;(3)记忆化搜索部分是基于这样的事实,我们利用Dijkstra找到的从2号点到1号点的最短路径中的每个点v,dist[v]都小于dist[1]。http://acm.hd
2012-03-19 16:46:14 5752 1
原创 天平秤重问题(三进制)
[问题描述]: 有一只天平和N只砝码,如何设计这N只砝码,才能使这天平能够连续秤出的重量最大?假设砝码的最小单位为1克,秤物时物品放在天平的左边,砝码可以放在右边也可以放在左边,不管放在哪一边只要天平能够平衡就行,物品的重量应是右边砝码总重量减去左边砝码的重量。输入一个物品的重量,输出其秤重方案。 [分析与算法选择]: 这个问题是从一个经典的数学问题变化而来,这个数学问题的大意是:
2012-03-15 21:40:04 5752 1
原创 背包问题扩展
http://acmpj.zstu.edu.cn/JudgeOnline/showproblem?problem_id=2574 砝码称重Description 设有1g 2g 3g 5g 10g 20g的砝码各若干枚(其总重Input 有多个测试数据 每个测试数据一行,由6个整数组成,分别是1g 2g 3g 5g 10g 20g砝码的数量 最后一行是0 0 0 0 0
2012-03-15 16:03:50 5159 2
原创 百度最新面试题集锦
1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2n/2 1要求:实现函数(实现尽可能高效) int func(unsign int n);n为输入,返回最小的运算次数。给出思路(
2012-03-13 15:10:40 129277 110
转载 memset()的效率以及源码分析
void *memset(void *s, int ch, size_t n);作用:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作。不知道有没有像我一样把memset当作万能的初始化工具,例如:int arr[n];memset(arr,1,n*sizeof(int));这样得到的a
2012-03-11 23:11:07 21990 9
原创 2008--2009年北京航空航天大学计算机研究生机试真题
http://ac.jobdu.com/problem.php?pid=1165 字符串匹配#include#include#includeusing namespace std;char str[1005][500],temp[1005][500],pattern[1005];inline bool pre_match(int j,int start,int end){ i
2012-03-08 11:28:36 5002 4
原创 C++简单笔试题
(1)下列( B )不是计算机病毒的特性。 A)传染性 B)结构性 C)隐蔽性 D)可激发性第(2)~(4)题基于如下所示的二叉树。 (2)该二叉树对应的树林包括( )棵树。 A)1 B)2 C)3 D)4(3)如果用liink-rlink法存储该二叉
2012-03-07 14:28:57 3125 2
原创 POJ 2083 递归画分形图
http://poj.org/problem?id=2083 Fractal方法一:/*度数为n的盒形分形,其大小是3^(n-1)*3^(n-1).可以用字符数组来存储盒形分形中各个字符,因为n<=7,而3^6=729,因此可以定义一大小为731*731的字符数组来存储度数不超过7的盒形分形.度数为n的盒形分形可以有以下递推式子表示:
2012-03-05 16:53:54 6714 1
原创 KMP算法详解及各种应用
KMP算法详解:KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字。其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题,只需确定下次匹配j的位置即可,使得问题的复杂度由O(mn)下降到O(m+n)。在KMP算法中,为了确定在匹配不成功时,下次匹配时j的位置,引入了next[]数组,next[j]的值表示P[0.
2012-03-04 22:42:57 15083 4
原创 2011年上海交通大学计算机研究生机试真题
http://ac.jobdu.com/problem.php?pid=1103 二次方程计算器#include#include#includeusing namespace std;int main(void){ int i,index,a,b,c,m,sign,ra,rb,rc; char str[200]; double rt,first,second; whil
2012-03-01 21:22:54 4360
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人