算法艺术
文章平均质量分 78
成鹏致远
这个作者很懒,什么都没留下…
展开
-
【算法】算法的艺术(一)
火车托运费的计算 设乘坐火车托运行李时按下列式子收费: 0 (0 应交费用y = (x–20) * 2 (20 (x–40) * 5 + 40 (x>40) 编一个程序用来计算应交金额。 实例解析: 这是第三章中的一个例题(当时是用swi原创 2013-06-27 17:37:06 · 511 阅读 · 0 评论 -
【算法】算法中的趣味数学(二)
求π的近似算法 用两种方法编程求π的近似值。 实例解析: 1、用“正多边形逼近”的方法求出π的近似值 我国的祖冲之就是用这种方法在世界上第一个得到精确度达小数点后第6位π值的。 利用圆的内接正六边形边长等于半径特点将边数翻番,做出正十二边形,求出边长,重复这个过程,就可获得所需精度的π的近似值。 假设单位圆的内接多边形的边长为2b,边数为i,则边数加倍后新的正多边形的边长为: 周长为原创 2013-06-27 17:37:33 · 481 阅读 · 0 评论 -
【算法】算法中的趣味数学(三)
求解线性方程 用高斯(Guass)消去法求解N阶线性方程组Ax=B。 实例解析: 高斯消去法解线性代数方程的基本原理如下。 对于线性方程组: 其中系数矩阵为A,未知量为X,值向量为B。计算的方法分为两步进行。 第1步,消去过程,对于k从0到n -2做以下3步。 从系数矩阵A的第k行、第k列开始的右下角子阵中选取绝对值最大的元素,并通过行交换与列交换把它交换到主元素(即对角线元素)的位原创 2013-06-27 17:37:35 · 437 阅读 · 0 评论 -
【算法】系统和文件操作
小续 对于数据结构和算法,都只是思想层面的东西,而在实际运用当中,多数是与系统和文件相联系的,所以对于学习数据结构与算法,可以参照操作系统中一些代码的实现,毕竟那都是经过大牛再三修改得出来的精华。 但据我了解,很多人都一味地去“研究”算法本身去了,算法主要是用来解决问题的,当它们遇到问题时,知道怎么解决,但却不知道从哪里入手,这是很悲剧的一件事情,而实际应用中,大多数操作都和文件相当,原创 2013-06-27 17:37:38 · 370 阅读 · 0 评论 -
【算法】算法的艺术
小续 最近很多人都在问我数据结构和算法的相关问题,对于初学者,貌似听到算法,数据结构什么的,都觉得是比较高深的东西,其实它们并没有想象中的难,只是你还没有一个整体上的把握,还没有习惯站在整体上去思考问题。算法是灵魂,数据结构是包装,语言只是工具,学什么语言并不重要,重要的是思想。这也是如鹏的理念:一通百通。 去年比赛的时候,我看过一些算法,也收集了一些自认为比较有代表性,优秀的算法,在这里整理原创 2013-06-27 17:37:40 · 467 阅读 · 0 评论 -
【算法】数据结构与算法之美,解剖艺术
Preface 因为最近一直在搞硬件的东西,所以暂时没管自己专业的东西,昨晚一童鞋问到一个网络里面的算法时,突然发现自己的强项,已然不是强项了,于是总结了一下 硬件的东西,其实是比较死的东西(对于目前的我来说),无非就是数电和模电里面的原理,对于硬件原理来说,更多的是0和1,对于某些人来说,0和1显得那么神秘,但是,它也在很大程度上,限制着人们的思维。 相比之下,软件的东西,就比较灵活了,写原创 2013-06-27 17:38:41 · 696 阅读 · 0 评论 -
【算法】算法之美—Fire Net
题目概述:Fire Net Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a street or a piece of wall. A blockhouse i原创 2013-06-27 17:38:44 · 362 阅读 · 0 评论 -
【算法】算法之美—Crashing Balloon
题目概述:Crashing Balloon On every June 1st, the Children's Day, there will be a game named "crashing balloon" on TV. The rule is very simple. On the ground there are 100 labeled balloons, with the原创 2013-06-27 17:38:46 · 651 阅读 · 0 评论 -
【算法】算法之美—Anagrams by Stack
题目概述:Anagrams by Stack How can anagrams result from sequences of stack operations? There are two sequences of stack operators which can convert TROT to TORT:[i i i i o o o oi o i i o o i o] where i原创 2013-06-27 17:38:56 · 412 阅读 · 0 评论 -
【算法】算法中的趣味数学(一)
小续 以下是我收集的一些有趣的计算实例,希望能够提高读者的编程水平及分析问题/解决问题的能力---------------------------------------------马克思手稿中的数学题 马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭共花了50先令。若每个男人花3先令,每个女人花2先令,每个小孩花1先令。问男人、女人和小孩各有几人?原创 2013-06-27 17:37:30 · 662 阅读 · 0 评论 -
【算法】算法的应用(三)
八皇后问题 求八皇后问题所有的解。 实例解析: 这是一个非常古老的问题:如何在一个8*8的棋盘上无冲突地放置8个皇后棋子,称为八皇后问题。 在国际象棋中,皇后可以沿着任何直线和任何45°斜线移动吃掉别的棋子,因此,任何一个皇后所在的横线上、竖线上和两条对角线上都不能有其他皇后存在。一个完整的、无冲突的八皇后分布称为八皇后问题的一个解。本例求解八皇后的所有解。 很显然,棋盘的每一行都原创 2013-06-27 17:37:28 · 430 阅读 · 0 评论 -
【算法】算法的艺术(二)
国民生产总值多少年翻番? 假设我国工农业总产值以每年9%的速度增长,问多少年翻一番? 实例解析: 翻一番意味着变为原来的两倍,而每年只能增加9%,相当于每年乘上一个1.09。我们可以在程序中不断地乘以1.09,并对此进行计数,若已经达到两倍,则计数器中的值便是需要经过的年数。 这是一个事先无法确定循环次数的循环。#include int main() {int n原创 2013-06-27 17:37:08 · 521 阅读 · 0 评论 -
【算法】算法的艺术(三)
打印魔方阵 一个奇数阶(设为n阶)的方阵,将1、2、3……n2填入方阵中,使每行、每列数据之和都相等,这样的方阵便是魔方阵。 实例解析: 填写魔方阵有一个固定的方法: (1)1总是位于第一行的中间。 (2)从2开始,下一个数总是位于上一个数的右上方的空格内,如5应该位于4的右上方。 (3)若右上方超出表格的右边界,则数字填入到第一列,行数不变。图16-1中的3和8都是这种情况。原创 2013-06-27 17:37:11 · 379 阅读 · 0 评论 -
【算法】算法的艺术(四)
数组作计数器 一篇文章共有10行,每行最多80字符,编程统计文章中26个英文字母分别出现的次数(不区分大小写)。 实例解析: 文章的内容可以通过键盘输入到一个二维数组中:char s[10][81]; for(i = 0; i <= 9; i++) gets(s[i]); 下面的任务就是统计这个二维数组中的26个英文字母各自出现的次数。根据经验,要统计他们出现的次数,原创 2013-06-27 17:37:14 · 306 阅读 · 0 评论 -
【算法】算法的艺术(五)
利用位运算求整数的原码或补码 利用位运算求任意整数的原码或补码。 实例解析: 整数在内存中本来就是用补码存放的,若要求出补码,只需求出内存中的每一位二进制数即可。而原码,若是负数,则需要将补码减1然后取反(最高位不取反)。 程序代码:#include "stdio.h"int main(){int n, i; char k; clrscr(); scanf("%d原创 2013-06-27 17:37:16 · 293 阅读 · 0 评论 -
【算法】算法的艺术(六)
报数游戏 n个小孩围成一圈,从1开始报数,报到k的人退出,其余人重新从1报数,仍是报到k退出,直到圈中只剩m个小孩,问最后剩下的是哪些人? 实例解析: 本题在这里将借助于数组求解,用链表求解的方法放在第17章算法与数据结构实例中。 设计思路:用数组元素模拟小孩。定义一个数组,每个元素存入一个数值作为小孩的编号,然后从第一个元素开始报数,报到k的人将编号清0,表示已退出圈子。在报数的过程中原创 2013-06-27 17:37:18 · 326 阅读 · 0 评论 -
【算法】算法·冒泡,选择,插入排序算法
小续 算法只是一种思想,在很大程度上,其实现都依赖于数据结构,所以这里提取出一些典型的算法和数据结构,包括排序以及链表/堆栈/队列等结构的操作------------------------------------------------------冒泡法排序 数组中有N个整数,用冒泡法将他们从小到大(或从大到小)排序。 实例解析: 排序是非常重要且很常用的一种操作,有冒泡排序、选原创 2013-06-27 17:37:21 · 405 阅读 · 0 评论 -
【算法】算法的应用(一)
储油问题 一辆重型卡车的油耗是1L/km,载油能力为500L,今欲穿过1000km的沙漠。由于卡车一次过不了沙漠,因此司机必须在沿途设几个储油点。问:如何建立这些储油点,每一个储油点储存多少油才能使卡车以最小油耗通过沙漠? 实例解析: 本例采用倒推法来解题。所谓倒推法,就是在不知初始值的情况下,通过某种递推关系,由最终值推算出初始值的方法。储油问题和猴子吃桃子问题等都是典型的倒退问题。原创 2013-06-27 17:37:23 · 422 阅读 · 0 评论 -
【算法】算法的应用(二)
多项式的表示和计算 设计一种用单链表存储多项式的结构,每个结点存储一项的系数和指数(类型都是int),并编写一个产生多项式链表的函数和一个实现两个多项式相加的函数。 实例解析: 用单链表存储每一项的数据,则链表结点的结构应含有三个成员:系数、指数和后继的指针。定义结构如下:struct Node{ int coef; int power; struct N原创 2013-06-27 17:37:26 · 1265 阅读 · 0 评论 -
【算法】算法之美—Jugs
题目概述:Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with the following puzzle. They were given a 3-gallon jug and a 5-gallon jug and were asked to fill the 5-gal原创 2013-06-27 17:40:47 · 647 阅读 · 0 评论