
算法
a_ran
程序员,公众号:进击的代码
展开
-
经典问题----倒水(详细解析)
倒水 有两个容器,容积分别为A升和B升,有无限多的水,现在需要C升水。 我们还有一个足够大的水缸,足够容纳C升水。起初它是空的,我们只能往水缸里倒入水,而不能倒出。 可以进行的操作是: 把一个容器灌满; 把一个容器清空(容器里剩余的水全部倒掉,或者倒入水缸); 用一个容器的水倒入另外一个容器,直到倒出水的容器空或者倒入水的容器满。 问是否能够通过有限次操作,使得水缸最后恰好有C升水。转载 2013-12-17 12:30:45 · 16567 阅读 · 1 评论 -
整数取反问题的算法实现(C/C++实现,极简5行代码)
整数取反问题的算法实现(C/C++实现,极简5行代码)原创 2013-12-17 13:33:20 · 4149 阅读 · 3 评论 -
寻找直方图中面积最大的矩形(C语言版)
寻找直方图中面积最大的矩形。我是用循环实现的,肯定不是最优的算法,欢迎留言讨论。给定直方图,每一小块的height由N个非负整数所确定,每一小块的width都为1,请找出直方图中面积最大的矩形。原创 2013-12-20 11:21:55 · 3719 阅读 · 0 评论 -
排列搜索 庞果网(C语言版,虽实现了,但未通过测试,时间超过3s,使用的是全排序方法,愿大神指导)
注:虽然没有通过测试,但学会了用递归实现全排序的方法(话说此题的通过率真低呀,哪位高手知道正确答案呢?)题目详情:设数组a包含n个元素恰好是0..n - 1的一个排列,给定b[0],b[1],b[2],b[3],问:有多少个0..n-1的排列a,满足(a[a[b[0]]]*b[0]+a[a[b[1]]]*b[1]+a[a[b[2]]]*b[2]+a[a[b[原创 2014-02-08 23:18:09 · 2388 阅读 · 4 评论 -
杨辉三角的变形 庞果网 (C/C++实现)
注:已通过测试题目详情: 1 1 1 1 1 2 3 2 11 3 6 7 6 3 1以上三角形的数阵,第一行只有一个数1, 以下每行的每个数,是恰好是它上面的数,左上的数和右上数等3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有偶数,则输出-原创 2014-02-11 17:34:35 · 1737 阅读 · 0 评论 -
Linux下C语言计算文件的md5值(长度32)
google了好久都没有找到合适的,其实我只需要一个函数,能计算文件的 md5 值就好,后来找到了 md5.h 和 md5.c 的源文件,仿照别人的封装了个函数(他那个有问题,和 md5sum 计算出来的都不一样)。废话少说,直接贴代码: (再废一句话,如果只想计算字符串的md5值,把字符串传给 MD5Update 函数一次就好)#include "md5.h"#include原创 2014-11-07 18:56:51 · 24717 阅读 · 22 评论 -
C语言计算日期间隔天数的经典算法解析
在网上看到了一个计算日期间隔的方法,咋一看很高深,仔细看更高神,很巧妙。先直接代码吧#include #include int day_diff(int year_start, int month_start, int day_start , int year_end, int month_end, int day_end){ int y2, m2, d2; int y1原创 2015-02-07 15:46:01 · 25544 阅读 · 8 评论 -
Go 循环跳转语句使用标签的作用之一
Go 中的 for 循环可以使用 continue, break 进行控制,同时也可以标签下面看一下使用标签的一个好处示例:Go 求 N 以内的素数package mainimport ( "fmt")func main() { printPrime(10)}func printPrime(maxNum int) {next: for outer := 2; o原创 2017-10-12 10:20:27 · 1696 阅读 · 0 评论