算法设计与分析
QingxinCyrilLee
没有最好,只有合适; 如果没有 框架/工具/集成环境/编译器/...,该怎么去做这件事?
展开
-
0-1背包问题
题目要求 给定n种物品和一个背包。物品i的质量为wi,其价值为vi,背包的最大载重量为C。编写一个程序,求解如何装载背包里的物品,使得装入背包的物品总价值最大。题目分析 (1)这是一个经典的问题。解决方法有很多,一般常用方法有:动态规划,分支限界,回溯法等。在这里先介绍一种简单的方法–回溯法。 (2)如果把这n种物品的取舍状态用一个向量表示{x1x_1,x2x_2,…,xix_i,…,x原创 2018-01-08 21:08:47 · 328 阅读 · 0 评论 -
格雷码构造问题
Gray 玛是一个长度为2 " 的序列。序列无相同元素,每个元素都是长度为原创 2018-06-07 23:41:26 · 3359 阅读 · 0 评论 -
贪心算法之活动选择问题
动态规划总是在追求全局最优的解,但是有时候,这样有点费时。贪心算法,在求解过程中,并不追求全局最优解,而是追求每一步的最优,所以贪心算法也不保证一定能够获得全局最优解,但是贪心算法在很多问题却额可以求得最优解。一、问题概述 活动选择问题: 假定一个有n个活动(activity)的集合S={a1,a2,....,an},这些活动使用同一个资源(例如同一个阶梯教室),而这...原创 2018-05-28 20:19:56 · 1444 阅读 · 0 评论 -
最小生成树(贪心思想)
点击打开链接转载 2018-05-28 20:06:12 · 525 阅读 · 0 评论 -
贪心法
一,基本概念 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。 所以对所采用的...原创 2018-05-28 19:45:13 · 337 阅读 · 0 评论 -
桶排序(Bucket sort)
桶排序思想:桶排序代价分析对N个关键字进行桶排序的时间复杂度分为两个部分:桶排序的的步骤:分类:桶排序思想:桶排序的基本思想:假设有一组长度为N的待排关键字序列K[1….n]。首先将这个序列划分成M个的子区间(桶) 。然后基于某种映射函数 ,将待排序列的关键字k映射到第i个桶中(即桶数组B的下标 i) ,那么该关键字k就作为B[i]中的元素(每个...原创 2018-05-06 20:35:49 · 284 阅读 · 0 评论 -
寻找矩阵中的“鞍点”
题目要求 在一个矩阵中,有这样的元素:它在该行中最大,而在该列中最小。我们把这样的元素称为“鞍点”。一个矩阵可能没有鞍点,要存在鞍点也只能有一个。任意输入一个5*5的矩阵,寻找该矩阵中的鞍点,并将它在矩阵中的位置输出。算法描述:对于一个m*n的矩阵Repeat: 找出第i行中最大的元素A[i][t]; If(本行中有与元素A[i][t]的值相等的元素)原创 2018-02-03 15:21:44 · 3970 阅读 · 0 评论 -
八皇后问题
题目要求 求解如何在一个8*8的棋盘上无冲突的摆放8个皇后棋子。国际象棋中,皇后移动方式可以为横,竖,交叉的,因此在任意一个皇后所在位置的水平,竖直,以及45度斜线上都不能出现皇后。解决方法: 在这里使用递归法求解八皇后问题,首先要构造八皇后问题的递归结构。可看成以下两部: (1)在棋盘的某行某列放置一枚皇后棋子。 (2)在其余棋盘上构造出符合要求的八皇后局面。#include<st原创 2018-01-09 16:28:51 · 209 阅读 · 0 评论 -
数值概率算法
基本概念计算定积分rand和srand在解决设计问题时,有时会用到概率算法。概率算法允许在执行过程中随机的选择下一步的计算步骤。又是可使算法大大降低复杂度,提高算法效率,但有时也可能得不到问题的全部答案。基本概念概率算法大致分为4类:熟知概率算法,蒙特卡洛算法,拉斯维加斯算法,舍伍德算法。这里首先介绍一下最基础的数值概率算法。 数值概率算法常用于解决数值计算的问题。该算法往往只能得到问题的近似原创 2018-01-09 10:26:47 · 4073 阅读 · 0 评论 -
C语言中常用计时方法总结
转载 http://blog.csdn.net/fz_ywj/article/details/8109368转载 2018-01-09 08:45:55 · 270 阅读 · 0 评论 -
malloc和free函数
一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 关于分配失败的原因,应该有多种,比如说空间不足就是一种。 void free(void *FirstByte): 该函数是将之前用malloc分配原创 2018-01-05 17:35:00 · 215 阅读 · 0 评论 -
贪心算法思想
最优装船问题贪心算法又称为贪婪算法,是指在对问题求解时,总是做出在当前看来是最好的选择。它不从整体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。而局部的最优解叠加到一起便是该问题整体的最优解,或者近似最优解。 (1)贪心选择性 是指所求解的问题的整体最优解可以通过一系列的局部最优解得到。 例:找零钱问题。有三种硬币(1元,5角,1角),现要找客人2元7角,要求找给客人的硬币数量最少。原创 2018-01-04 21:48:44 · 257 阅读 · 0 评论 -
最小值函数重载
最小值函数重载最小值函数重载//#include"stdlib.h"//malloc(),realloc();free()...的头文件;#include"iostream"#include"string"using namespace std;template<class type>type min(type a,type b){ if(a>b) return a;原创 2017-12-29 15:21:42 · 495 阅读 · 0 评论 -
验证四方定理
四方定理的验证四方定理的验证四方定理是数论中的重要定理,可以叙述为:所有自然数最多只要四个数的平方和就可以表示。验证四方定理分析 由于四方定理已是被验证了的数论定理,所以实际上就是把任意输入的一个自然数表示为至多四个数的平方和的形式。 即一个自然数满足一个数(或两个或三个或四个)的平方,这四种情况。验证四方算法:#include"stdio.h"#include"math.h" int mode原创 2018-01-02 09:25:51 · 3097 阅读 · 0 评论 -
字符类型统计器
字符类型统计器字符类型统计器请编写一个C程序,在终端用键盘输入字符串,以Ctrl+Z组合键表示输入完毕,统计输入的字符串中空格符,制表符,换行符的个数,并显示统计结果。题目分析: 解决字符的分类问题可以通过字符的ASCII码进行判断。 Ctrl+Z的组合键输入的字符在计算机中对应的是EOF结束标志。#include<string.h>#include<stdio.h>main(){原创 2017-12-27 10:42:13 · 601 阅读 · 0 评论 -
计算字符的ASCII码
计算字符的ASCII码计算字符的ASCII码:例:编写一个程序,在终端输入一个字符,输出它的ASCII码。题目分析: 关键在于字符在内存中的存储方式。一个字符在内存中存放形式是以它的ASCII码形式存放的,大小为8bits,一个字节。(如果感兴趣,可以看一看计算机中操作系统等内部过程,不要局限于打码。) printf(“%d”,c); printf(“%c”,c);(双引号中,紧跟百原创 2017-12-27 11:15:05 · 6027 阅读 · 0 评论 -
兰顿蚂蚁
兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。 问题描述: (1)平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。 蚂蚁的头部朝向为:上下左右其中一方。 (2)蚂蚁的移动规则十分简单: 若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格; 若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。 规则虽然简单,蚂蚁的行为却十分复杂,蚂原创 2017-12-27 20:20:43 · 144 阅读 · 0 评论 -
动态规划简例
点击打开链接转载 2018-06-08 13:31:11 · 112 阅读 · 0 评论