- 浏览: 31415 次
- 性别:
- 来自: 西安
最新评论
文章列表
问题描述:
给定n个整数(可能为负数)组成的序列a1,a2,a3,...,an, 求该序列子段和的最大值
例如:
X={-2, 11, -4, 13, -5, -2}, 其最大子段和为20
最大子段为:11,-4,13
解法一:穷举法
列举所有的可能,求其中的最大值
算法实现如下:
/*
* description: 最大子段和问题
* 问题描述:给定n个整数(可能为负数)组成的序列a1,a2,a3,...,an,
* 求该序列子段和的最大值
* 解法一:穷举法,选取其中一个最大的值
*
* auther: cm
* date: 2010/11/19 ...
问题描述:
找出由n个数组成的序列的最长单调递增子序列
解法一:
原序列记为X,对n个数递增排序,构造一个新序列Y, 对X,Y求其最长公共子序列即可.
/*
* description: 最长单调递增子序列
* 问题描述:
* 找出由n个数组成的序列的最长单调递增子序列
* 算法设计:
* 解法一:
* 原序列记为X,对n个数递增排序,构造一个新序列Y, 对X,Y求其最长公共子序列即可.
*
* auther:cm
* date:2010/11/17
*/
import java.util.LinkedList;
import java.ut ...
一个给定序列的子序列是在该序列中删去若干元素后得到的序列。若给定序列X={x1, x2, ..., xm},则另一序列Z={z1, z2, ..., zk},X的子序列是指存在一个严格递增下标序列i, 使得对于所用的j=1, 2, 3,...,k有zj = xi.
例如:序列X={A, B, C, B, D, A, B}的一个子序列Z={B, C, D, A}。
给定两个序列X和Y, 当另一序列Z既是X的子序列又是Y的子序列,则称Z为X和Y的公共子序列。
最长公共子序列问题:
给定两个序列X={x1,x2,x3,...,xm}和Y={y1,y2,y3,...,yn},找出X和Y的最 ...
/* description:
*
* 动态规划算法之矩阵连乘问题
* 1)矩阵Ai*Ai+1*...*Aj简记为A[i:j],所需的最小计算次数为m[i][j].
* 2)当i=j时,m[i][j] = 0
* 3)当 i<j时,假设使m[i][j]最小的最优次序是在Ak和Ak+1之间断开,
* 则m[i][j] = m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j],其中k的位置可以是:i, i+1, ..., j-1,
* 数组p[]存储各个矩阵的维数,s[i][j]标记m[i][j]的断开位置k.
*
* auther: cm
...
strlen函数的自定义实现
- 博客分类:
- C/C++
递归法:
int strlen(char *str)
{
if (*str != '\0')
{
return strlen(++str) + 1;
}
else
{
return 0;
}
}
统计字符串中字符出现的次数
- 博客分类:
- Java
方法一:
用数组实现,把字符的ASCII码值作为数组的下标,对字符出现的次数不断累加.
实现对ASCII码128个字符出现次数的统计.
//字符统计
public class CharacterTest
{
public static void main(String[] args)
{
if (args.length == 0)
{
System.out.println("参数错误!");
System.exit(1);
}
int[] character = new int[128]; //存放字符出现次数 ...
指向函数的指针是一个指针变量,它指向一个函数。一个函数名是一个指针,它指向函数的代码。函数的调用可以通过函数名,也可以通过指向该函数的指针。
指向函数的指针其定义的一般形式为:
类型名 (*指针变量名)();
例如:
int (*p)(int i, int j);
p是一个指针,它指向一个函数,该函数有两个整型参数,返回类型为int .
注:
int *p(int i, int j);
这是一个函数声明,返回类型为int型指针。
1、函数指针的简单使用:
//函数指针的使用
#include <stdio.h>
#define GET_MAX ...
二分搜索算法是运用分治策略的典型例子。
基本思想:将n个元素分成大致相同的两半,取a[n/2]与x进行比较。如果x==a[n/2],则找到,算法终止。如果a[n/2]>x,则只要在数组的左半部分继续搜索x.如果x>a[n/2],则只要在数组的右半部分继续搜索。
算法简单实现如下:
//二分搜索法
public class BinarySearch
{
/* 采用二分搜索法在一个有序的数组中查找x元素
* 找到x时返回它在数组中位置,否则返回-1
*
*/
public static int binarySearch(int[] arr, i ...
// 二维数组动态扩展的简单实现(规则数组)
// 使用System.arraycopy(from, fromIndex, to, toIndex, count)方法
public class DynamicArray
{
private static final int MAX = 4;
public static void main(String[] args)
{
int[][] arr1 = new int[MAX][MAX];
//数组初始化
for (int i = 0; i < arr1.length; i++)
...
Prim算法Java朴素版
//Prim算法求最小生成树,使用Java语言的简单实现
// 图用邻接矩阵存储
import java.util.*;
public class PrimMST
{
private static int MAX = Integer.MAX_VALUE;
public static int prim(int graph[][], int n)
{
//最小权值和
int sumcost = 0;
// lowcost[i]记录以i为终点的边的权值,当lowcost[i]=0时表示终点i加入生成树
int low ...
说明:本文针对mysql-noinstall版本,也就是解压缩版在Windows下的基本配置
操作系统: Windows XP
MySQL版本: mysql-5.1.50-win32
1、下载MySQL解压包 mysql-noinstall-5.1.50-win32.zip
解压缩到某个目录。例如:D:\Java\mysql
2 ...