数独求解算法

在上海乘坐地铁朋友都知道上海地铁站免费赠阅时代报上经常会刊登有数独这个益智游戏如果用纸和笔人工去算话恐怕你要花上老半天功夫了有时候还不定能解出来心中定很郁闷吧?网上也有些数独游戏求解计算器不过我想和其直接拿来主义还不如自己研究编个呢!所以花了大概有个多月时间来编写了这样个数独求解软件Software由于不是利用所谓穷举算法所以如果数独游戏非唯解话... [阅读全文]

搜索引擎排序算法:排序链树搜索算法

标签 排序链树GISPOI关键字搜索算法概念阐述链树及其相关概念 本来数据结构教科书中不存在种叫做“链树”数据结构用Goolge也搜索不到这种数据结构是为了在GIS系统中进行POI关键字高速搜索在n叉树基础上改进种数据结构为了论述方便姑且称的为链树 链树就是在n叉树基础上给每个树节点(包括树根和叶子)都挂接上个链表而形成数据结构下图就表示棵典型链树 图1 链树2个显著特点是... [阅读全文]

aes算法:AES算法的数学基础

1.GF(2)域上多项式 在有限域GF(28)中元素操作运算可采用几种区别思路方法来表示AES算法主要选择传统多项式表示法进行区别表示对GF(28)运算复杂度是有影响 个由b7b6b5b4b3b2b1b0组成字节b可表示成系数为[0, 1] 2进制多项式 b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x1 + b0 例如... [阅读全文]

统计分组的原则:分组密码的设计原则

分组密码设计就是找到种算法能在密钥控控制下从个足够大且足够好置换子集中简单而迅速选出个置换用来对当前输入明文进行加密交换般地分组密码设计准则包括安全性准则和实现性准则两种前者主要研究如何设计安全算法分组长度和密钥长度后者主要讨论如何提高算法执行速度 2. 1 安全性原则 有关实用密码两个般设计原则是Shannon提出混乱原则和扩散原则 1.混乱原则:人们所设计密... [阅读全文]

标准体重的算法:算法的概念

算法(Algorithm)是为解决个问题采取思路方法和步骤也就是说算法是为实现某种计算过程而规定基本动作执行序列算法分两大类:数值计算思路方法和非数值计算思路方法 算法有如下特点: (1)算法操作步骤有限即算法有穷性(Finiteness)也就是算法要有合理限度算法执行步数存在上界要在执行有限步骤后终止所谓算法合理限度是指执行时间合理限度如果个算法执行时间超过了这限度尽管可行但算法本身已无实用价值... [阅读全文]

算法描述:算法的描述

算法描述思路方法很多根据描述算法语言区别可将算法分为以下常用 4种: (1)框图描述法该描述思路方法在算法研究早期非常流行个算法可以用流程图方式来描述输入输出、判断、处理分别用区别框图表示用箭头表示流程流向它优点足直观、易懂但用来描述比较复杂算法就显得不够方便也不够清晰简洁目前在些高级语言设计中仍然采用此种思路方法 (2)非形式描述法用自然语... [阅读全文]

算法设计与分析基础:算法分析基础学习

在计算机解决问题的过程中,数据结构和算法是程序的两大要素,二者相辅相成,缺一不可。算法与数据结构的好坏直接相关,一种数据结构的优劣是由实现其各种运算的算法体现的。对数据结构的分析实质上也表现为对实现其多种运算的算法分析。算法分析是一个复杂的问题,它首先涉及到优劣准则的确定。判断一个算法的优劣主要有以下几个标准: (1)正确性。要求算法能够正确地执行规定的功能。这是最重要也是最基本的准则; (2)可... [阅读全文]

大牛生小牛的问题解决方法

问题: 一只刚出生的小牛,4年后生一只小牛,以后每年生一只。现有一只刚出生的小牛,问20年后共有牛多少只? 思路: 这种子生孙,孙生子,子子孙孙的问题,循环里面还有循环的嵌套循环,一看就知道是第归问题。 于是乎,第一个版本出现: public long Compute1(uint years) { //初始化为1头牛 long count = 1; if (years = 3) { return ... [阅读全文]

递归算法:递归算法学习(分而治之策略)

分而治之的概念 分而治之是一种使用递归解决问题的算法,主要的技巧是将一个大的复杂的问题划分为多个子问题,而这些子问题可以作为终止条件,或者在一个递归步骤中得到解决,所有子问题的解决结合起来就构成了对原问题的解决 2. 分而治之的优点和缺点 分而治之算法通常包括一个或者多个递归方法的调用,当这些调用将数据分隔成为独立的集合从而处理较小集合的时候,分而治之的策略将会有很高的效率,而在数据进行分... [阅读全文]

归并排序的算法:递归算法学习(归并排序)

归并排序是利用递归和分而治的技术将数据序列划分成为越来越小半子表再对半子表排序最后再用递归步骤将排好序半子表合并成为越来越大有序序列归并排序包括两个步骤分别为: 1)划分子表 2)合并半子表 首先我们来讨论归并算法归并算法将系列数据放到个向量中索引范围为[first,last],这个序列由两个排好序子表构成以索引终点(mid)为分界线以下面个序列为例 710... [阅读全文]

判断句子并修改:判断句子是不是魔法咒语的算法

描述如下: "话说有个魔法字典,其中记录了一些魔力单词(字符串),如果一个句子(也是字符串)可以被完全分解为若干魔力单词的拼接,那么这个句子就是一条咒语。假设我们可以用常数时间查询魔力字典是否包含一个特定的单词,那么现在给你一个句子,让你写一个程序判断这个句子是否一条咒语。用动态规划可以解哦。" 其中跟贴的有人说到需要先列出“状态转移方程”,我不太懂,不过觉得这个问题倒是可... [阅读全文]

md5算法:MD5算法实现注意方法

前记:   最近很有危机感发现自己相对别人毫无优势虽然在班里成绩还算拔尖但最近想静下来认认真真做个小东西出来却发现自己虽然感觉什么都知道些但却什么都做不出来!   盗版李宗盛最近比较烦句歌词“最近比较烦比较烦比较烦我看那前方怎麽也看不到岸;那个后面还有班天才追赶哎呦写段皆大欢喜是越来越难”...打击太大了   这种时候最不能混乱了我要安安... [阅读全文]

螺旋藻:螺旋队列

一道题: 21 22 .... 20 7 8 9 10 19 6 1 2 11 18 5 4 3 12 17 16 15 14 13 看清以上数字排列的规律,设 1 点的坐标是 (0,0),x 方向向右为正,y 方向向下为正。例如,7 的坐标为 (-1,-1),2 的坐标为 (0,1),3 的坐标为 (1,1)。编程实现输入任意一点坐标 (x,y),输出所对应的数字。[Finland 某著名通信设... [阅读全文]

冒泡排序法:冒泡排序

#includeiostream #includeiomanip using namespace std; void BubSort(int r[],int n) { int i,j,t; int flag;//flag=0 means no sorting;otherwise sorting for(i=n-1;i0;i--) { flag=1; for(j=0;ji;j++) if(r[j]r... [阅读全文]

实现快速排序算法:排序算法的C实现

由于实际工作中处理数量巨大所以排序算法对算法本身速效率要求很高 而般我们所谓算法性能主要是指算法复杂度般用O思路方法来表示 对于排序算法我想先做点简单介绍也是给这篇文章理个提纲 我将按照算法复杂度从简单到难来分析算法 第部分是简单排序算法后面你将看到他们共同点是算法复杂度为O(N*N)(没有使用word,所以无法打出上标和下标) 第 2部分是高级排序算法复杂度为... [阅读全文]

写了一个八皇后解法

先用最笨的穷举法求解,有空再研究更好的解法: # -*- coding: gb2312 -*- size = 8 # 棋盘大小 EMPTY = "O" # 空位 QUEEN = "X" # 皇后 # 查看棋盘的信息 def show_board(cols): for i in range(1, size + 1): for j in range(1, size + 1): if j == cols... [阅读全文]

蒙特卡罗算法:蒙特卡罗算法在游戏(围棋)AI中的应用

参考:[http://www.crazycoder.cn/]参考:[http://www.crazycoder.cn/]As many of my classmates have posted, the Monte Carlo method isn’t actually any single method, but actually represents an entire class... [阅读全文]

冒泡排序:冒泡排序 bubble sorting

int t; int[] a ={21,56,64,94,97,123}; for(int j =a.Length-1;j0;j--) { for(int i =0;ij;i++) { if(a[i]a[i+1]) { t =a[i]; a[i]=a[i+1]; a[i+1]=t; }}} for(int u =0;ua.Length;u++) Console.WriteLine(a[u... [阅读全文]

最小费用最大流算法:同时找最大最小算法

int temp; int[] a={56,66,5,1230,87,95}; for(int i =0;i(a.Length+1)/2;i++) { if(a[i]a[a.Length-1-i]) { temp =a[i]; a[i] =a[a.Length-1-i]; a[a.Length-1-i] =temp; } } int max =a[a.Length-1],min =a[0];... [阅读全文]

排序算法:排序算法集合大全

基数排序 int[] a={1,5,9,7}; int[] b=new int[10]; for(int i=0;ia.Length;i++) b[a[i]]=1; for(int j=0;jb.Length;j++) if(b[j]==1) Console.WriteLine(j); 结果:1,5,7,9插入排序 int[] r={12,2,6,65,42}; for(int i=1;ir.Le... [阅读全文]

二叉查找树算法

// 二叉查找树节点 Binary search tree node public class BinarySearchTreeNode { public int key;// 二叉查找树节点的值 public BinarySearchTreeNode left;// 二叉查找树节点的左子节点 public BinarySearchTreeNode right;// 二叉查找树节点的右子节点 //... [阅读全文]

单链表的建立:单链表

class Node { int a; public Node(int a) { this.a=a; } public int A {get{return a;} set{a=value;} } public Node next; } class LinkedList { Node header; public void Generate(int x) { if(header==null) ... [阅读全文]

双向链表:反向链表

class Link //this class reverse the LinkedList { public int a; public Link next; } class createLink //the class create the LinkedList { Link header=null; Link p = null; Link temp = null; Link l=null; ... [阅读全文]

stack:Stack 栈

Node { a; public Node( a) { this.a=a; } public A { get{ a;} {a=value;} } public Node next; } LinkedList { protected Node header; ... [阅读全文]

递归方法:使用递归的方法计算1到100的累加

今天去面试遇到这道题目有段时间没写了温习下:题目是使用递归思路方法计算1到100累加也就是计算1+2+3+4+........+100大家想必已经听说过高斯如何计算这道题故事也知道答案是5050我整理了下使用递归解决思路和大家分享递归特点就是递归本身会自己对应到逻辑上就是段逻辑会使用这段逻辑自身要使用递归思路方法解决这道题就要先用递归思维方式描叙这道题我们来看看... [阅读全文]

k均值算法:得到第K个大的数算法实现方法

第种算法是最容易想到就是利用快速排序思想将个分成以某个数X为轴左边所有数都比X小而右边数都比X大但我快速排序区别是在这个算法中只考虑X边而不是两边都考虑 如果X位置是i,那么要得到第k个数如果k=i, 那么这个数定在i左边否则在i右边 源码如下: # stdio.h # stdlib.h _random( min, max) { (min + ()... [阅读全文]

最短路径算法:A*最短路径算法

看完Patrick Lester文章和他源码(C)后总算知道了如何实现最有名气最短路径算法——A*算法了并跟据他提示结合广度优先搜索法写出现在很流行游戏连连看路径查找思路方法以下是我写这段时心得体会体会第:数字化你运动方向 你要求东东是几个运动方向:8个?4个? Patrick Lester先生源码是8个连连看是4个下面看看4个和8... [阅读全文]

算法及其实现:希尔排序(shellsort)算法实现

希尔排序(shellsort)又叫增量递减(diminishing increment)排序是由D.L. Shell发明这个算法是通过个逐渐减小增量使个逐渐趋近于有序从而达到排序目 假设有个 data[16] = {...} 首先将这个增量设为16 / 2 = 8这样就将这个分成了8个子它们索引是0, 8 1, 9 2, 10等等 对... [阅读全文]

mergesort算法:归并排序(merge sort)算法实现(C++)

归并排序(merge sort)体现了分治思想即将个待排序分为两部分对这两个部分进行归并排序排序后再对两个已经排序好进行合并这种思想可以用递归方式很容易实现归并排序时间复杂度为O(nlogn)空间复杂度为O(n)实现代码如下: Code highlighting produced by Actipro CodeHighlighter (freeware)... [阅读全文]

实现快速排序算法:快速排序(quicksort)算法实现(C++)

快速排序(quicksort)是分治法典型例子它主要思想是将个待排序以某个元素X为轴使这个轴左侧元素都比X大而右侧元素都比X小(从大到小排序)然后以这个X在变换后位置i分为左右两个子再分别进行快速排序直到子中只有个元素为止快速排序算法如下 Code highlighting produced by Actipro CodeHighlighter (fre... [阅读全文]
<< < 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 > >> 共792条 分27页