Algorithm
文章平均质量分 89
然鸟
这个作者很懒,什么都没留下…
展开
-
2011ACM大赛题目之贪吃蛇算法
一条贪吃的蛇在一个n*m的网格中游走,它只能从一个方格走向另一个相邻的方格,这里相邻的意思是两个方格有公共边。每个方格可以看作是一个房间,其中一些是空的,一些存放有苹果。贪吃的蛇根本不进入空的房间,而进入有苹果的房间后就可以带走所有苹果使房间成为空的。蛇从一个指定的房间出发,最终回到它的家,把一路带来的苹果存储到家中,当然,它希望带来的苹果最多。请编写程序,输入有整数n和m,及n*m的一个矩阵,矩原创 2012-04-23 23:16:33 · 3414 阅读 · 2 评论 -
如何求1到N的数的全排列
// 求N个数的全排列 #include "stdafx.h"#include #include #include using namespace std;#define N 5int n = 0;void output(int str[N], int begin){ if (begin == N - 1) { for (int i = 0; i < N; i+原创 2012-04-14 21:00:26 · 2344 阅读 · 0 评论 -
[ACM]切木头
背景人们需要把一跟很长的木头切成几段,有一家名为 Analog Cutting Machinery (ACM) 的公司正在经营这一业务。他们根据切割前木头的长度来收费,木头越长、收费越高,并且每切割一次就收一次费。显而易见,在这里切割木头时,不同的切割顺序就会产生不同的价钱。譬如一跟 10 米长的木头,需要在 2、4、7 米处切开。如果顺序在这三个位置切割,需要的费用是 10 + 8 +原创 2012-05-03 10:08:53 · 1369 阅读 · 0 评论 -
[ACM]图形编辑器
原题见:http://acm.uva.es/p/v102/10267.html背景图形编辑器(graphical editor)允许用户改变位图图像,比如大家经常用到的Photoshop。它所采用的改变方法和文本编辑器允许修改文档的方法一样。位图图像由MxN的像素矩阵来表示,并且每个像素点都有给定的颜色。我们的任务就是来要编写一个程序来模拟一个简单的交互式图形编辑器。输入原创 2012-05-04 17:56:26 · 1409 阅读 · 0 评论 -
[ACM] Where's Waldorf?
BackgroundGiven an m by n grid of letters and a list of words, find the location in the grid at which the word can be found.A word matches a straight, uninterrupted line of letters in the grid. A原创 2012-05-03 16:04:58 · 848 阅读 · 0 评论 -
[ACM]穿越矩阵
现在有一个 m * n 的整数矩阵,请你编写一个程序计算出一条从左到右穿过矩阵的路径,并使此路径的费用最小。路径从矩阵的左侧的第一列的任意单元格开始,逐步穿过矩阵到达最右侧的一列的任意单元格。每一步是指从某单元格进入它一列的相邻单元格(如下图,可以是横向或斜向)。矩阵的第一行和最后一行实际是相邻的,你可以想象矩阵是包裹在一个横放的圆柱体外面。路径的花费是指这条路径所穿越的所有单元格中的数字原创 2012-05-03 16:27:03 · 2115 阅读 · 0 评论 -
动态规划学习之三种方法解决斐波拉契数
斐波拉契数是一个很经典的问题,也会很多公司面试的考题,每个学习计算机的同学都会接触这个问题,尤其是在学习递归的时候,利用递归来解决斐波拉契数是很多教材采用的一个例子,所以很多同学一想到斐波拉契马上就会采用递归,递归貌似简单,但是效率真的很高吗?不然!下面是我在学习动态规划的过程中总结的集中解决斐波拉契数的不同方法:一、最野蛮最原始的方法long f0(int n){ if (n =原创 2012-05-03 09:23:24 · 1833 阅读 · 0 评论 -
[ACM]POJ1979 Red and Black
题目来源:北京大学POJ http://poj.org/problem?id=1979DescriptionThere is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. Fro原创 2012-05-02 12:17:04 · 2049 阅读 · 0 评论 -
[ACM]编程珠玑
你有一条项链,它由 N 个随机排列的红、白和蓝色的珠子组成(3 1 2 1 2 r b b r b r r b r b b b原创 2012-05-02 18:04:19 · 1462 阅读 · 1 评论 -
[ACM]恭喜发财 利是窦来
在中国,过春节时人们有给孩子压岁钱(粤语称为利是)的习俗。最早的压岁钱出现于汉代,又叫压胜钱,并不在市面上流通,而是铸成钱币形式的玩赏物,有避邪的功能。钱币正面一般铸有“万岁千秋”、“去殃除凶”等吉祥话和龙凤、龟蛇、双鱼等吉祥图案。据说嘉兴府有一户姓管的人家,夫妻老年得子,十分珍爱。在年三十晚上,为防止“祟”来侵扰一直逗孩子玩,小孩用红纸包了八枚铜钱,包了又拆,拆了又包,睡下以后,包着的八原创 2012-05-02 09:18:25 · 3173 阅读 · 0 评论 -
[ACM]暗算 2.0
背景此“暗算”非彼《暗算》 ,虽然我们没有电影中阿柄惊人的听力,可以辨别破译密码,但是我们也可以成为破译专家。现在就来给大家作一个集训:改变阿拉伯字母的顺序是文本加密中十分常用的方法,但是并不安全。也就是说,把文本中的每一个阿拉伯字母都要一致地替换成一些其他的字母。为了保证加密的可逆性,需要每个阿拉伯字母都有唯一一个替换的字母(也就说,任意两个阿拉伯字母都不可以用同一个字原创 2012-05-01 00:46:18 · 1389 阅读 · 1 评论 -
calculate the answer of a + b
这是一道acm练习题,原题见“北京理工大学2012年ACM寒假练习题”,http://acm.bit.edu.cn/mod/programming/view.php?a=485 Problem DescriptionNow let’s calculate the answer of a + b ~InputThe input will consist of a set原创 2012-04-26 18:13:43 · 3121 阅读 · 1 评论 -
C++快速排序之sort()
sort()函数是C++中的排序函数其头文件为:#include头文件;sort()相对于qsort()更加灵活,对基本的类型排序不需要定义排序函数1、sort()sort 对给定区间所有元素进行排序stable_sort 对给定区间所有元素进行稳定排序partial_sort 对给定区间所有元素部分排序partial_sort_copy 对给定区间复制并排序n原创 2012-04-30 23:57:15 · 6450 阅读 · 2 评论 -
C程序实现快速从文件输入和输出到文件(ACM练习好帮手)
最近在做ACM练习题,一个程序需哟啊反复调试,而且每次调试都要重复的输入大量的数据,非常的麻烦,如果能够避免每次手动输入,而改为从文件输入那就方便多了,每次调试的时候都从指定的文件读取数据,而不用手动从控制台输入,freopen函数很好的实现了这一功能:函数原型:FILE * freopen ( const char * filename, const char * mode, FIL原创 2012-05-01 00:22:32 · 2048 阅读 · 0 评论 -
[ACM]Look up the words in the dictionary
DescriptionYou have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have a dictionary to help you understand them.原创 2012-05-01 00:31:50 · 2203 阅读 · 0 评论 -
C程序快速排序之qsort()
qsort包含在头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。其排序是根据二分法写的,其时间复杂度为n*log(n)。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。 其实qsort的用法跟sort十分的相像。关于sort的用法见下一篇文章。函数原型:void qsort ( void * base, size_t n原创 2012-04-30 23:45:40 · 1144 阅读 · 0 评论 -
深入浅出之背包算法——动态规划是如何打败递归的?
背包问题(Knapsackproblem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。这个问题涉及到了两个条件:一是物品总的大小小于或等于背包的大小,二是物品总的价值要尽量大。 一.采用递归的回溯法 刚开始接触此类问题时,很多人都会想到用回溯法解决,也就是原创 2012-04-25 00:00:43 · 1232 阅读 · 0 评论 -
c实现内存文件系统
华为软件训练营的一个高级练习题,比较有意思,值得练习一下! 题目不是很难,主要是考察一下几个知识点: (1)数据结构中树的操作,包括树的定义、树的遍历、节点的插入和删除,这里采用了带双亲的孩子兄弟表示法,实际上可以转换为二叉树,可以采用中序遍历的方式访问树的节点。 (2)内存管理。树节点中存放有树的信息,在每次插入一个新节点的时原创 2014-03-06 20:46:42 · 2447 阅读 · 0 评论