Category Archives: 算法&数据结构

经典百度面试算法:万人工厂分配任务

: A厂有1万个工人,编号0-9999,( EE[10000] ), 1个厂长( GG )分派任务, 1个监工( MM )管理工人.厂子忙的时间不确定,可能突然很忙,1天接到任务5000多个,1个任务只能分配给1个工人做, 也可能好几十天没新任务.厂长分配任务给这1万个工人干,按工人编号一个一个来,到最后一个工人就又从头开始,任务完成时间各不相同,可能一个工人在分配任务的时候手里还有任务, 就得换下一个。
  但是这1万个工人都很懒,领到了任务先不做,需要监工1个1个去问,如果工人有任务,就做[......]

继续阅读

单源最短路径之Java实现(使用Java内置优先队列)

import java.util.*;

/**
* 用堆实现了从一个点到其他点的最短路径
* @author
*/
public class ShortestPath
{
/**有n个节点*/
private int n;
/**节点矩阵*/
private double matrix[][] = null;
/**存储单源最短路径*/
private double minpath[];

public ShortestPath(int n)
{
this.n[......]

继续阅读

宝石排列问题C++描述

问题描述:
(王晓东 算法设计与分析 第五章习题)
现有n种不同形状的宝石,每种n 颗,共n*n颗。同一种形状的n颗宝石分别具有n种不同的颜色c1,c2,…,cn中的一种颜色。欲将这n*n颗宝石排列成n行n列的一个方阵,使方阵中每一行和每一列的宝石都有n种不同形状和n种不同颜色。试设计一个算法,计算出对于给定的n,有多少种不同的宝石排列方案。
问题地址:
http://acm.bjtu.edu.cn/OnlineJudge/problem?problem_id=1083
/**[......]

继续阅读

动态规划解题报告:To the Max

题目名称:To the Max
题目来源:POJ 1050
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1050
题目分类:动态规划
解题思路:
题目要求清晰,求出最大子矩阵。其中,输入数据是一个N*N的矩阵。
(1)化简为一维情况

    矩阵是二维的,先把这个问题简化,如果变成一维的情况如何?即对于形如 1 -2 3 4 7 的这一行求最大子段问题,对于这个一维情况,容易知道如下的规律:
 [......]

继续阅读