算法
zgljl2012
这个作者很懒,什么都没留下…
展开
-
插入排序的递归算法
一、算法思想由插入排序的基本思想可以得到它的递归算法:确定前面的数是已经排好序了的,从当前数开始,依次一个个的插入到前面的数中。 二、代码//插入排序的递归算法void insert(vector& a, int x=1) { //第一个参数为向量,第二个参数为原创 2014-03-16 11:30:31 · 5709 阅读 · 1 评论 -
【算法C++】烙饼排序
问题描述: 把一摞大小不一的烙饼按顺序排好,大的在下面,小的在上面, 要求只能用一只手去翻转烙饼位置,另一只手要端盘子; 输出最优化的排序过程。示例: 3 1 2 翻转 1 , 当前烙饼排序 3 2 1 成功!算法描述: 问题解析:一个未排序的数列,如 a,b,c,d,~z 每一次选取其中一个数,将它与最后一个数之间的 所有数(包含它们两个)进行翻转,直到这一列数 排好顺序算法:原创 2015-09-28 23:36:12 · 2426 阅读 · 2 评论 -
【编程之美】中国象棋将帅问题
问题描述在中国象棋里将和帅是不能碰面的,如下图所示,当将位于d10时,帅就不能在d1,、d2、d3。请写一个程序,输出将、帅所有的合法位置。要求在代码中仅用一个变量。 如果只是输出将、帅的合法位置,那这题就比较容易了,只要二重循环判断一下就行,但后面一个条件就将题目的难度上升了好多。算法分析因为是判断两个对象A、B的位置符不符合要求,而且每个对象一共就只有9个位置可选,可以比较快地想到程序的大体框原创 2015-09-21 22:59:28 · 4227 阅读 · 0 评论 -
【LeetCode】Longest Substring Without Repeating Characters
问题描述Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "b", with th原创 2016-09-23 09:55:17 · 1038 阅读 · 0 评论 -
【Leetcode】Two Sum
问题描述Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution.Example:Given nums = [2, 7, 1原创 2016-09-21 09:32:46 · 1078 阅读 · 0 评论 -
【LeetCode】Add Two Numbers
问题描述You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a l原创 2016-09-22 09:55:03 · 1080 阅读 · 0 评论 -
【LeetCode】Longest Palindromic Substring
问题描述Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.给定一个字符串S,找到最长的回文子串(S的长度原创 2016-09-28 15:37:17 · 879 阅读 · 0 评论 -
【算法导论-学习笔记】以线性时间增长的排序——计数排序
计数排序是一种能够达到运行时间能够线性时间θ(n)的排序算法。在排序算法里算是最快的算法之一,当然,他有很强烈的前提。下面开始介绍一下技术排序(Counting Sort)。算法思想计数排序假设n个输入元素中的每一个都是介于0到k之间的整数,此处k为某个整数。这样可以用一个数组C[0..k]来记录待排序数组里元素的数量。当k=O(n)时,计数排序的运行时间为θ(n). 注:关于C[0..k],用原创 2015-09-18 10:24:02 · 2202 阅读 · 0 评论 -
【算法C++】检测数组里是否有两个数之和等于某个数
问题: 检测数组里是否有两个数之和等于某个数解决方法一:先将数组排序,然后从两头开始遍历 数组排序后,从左端开始取最小值,从右端取最大值, 判断两者之和与目标的大小: 1. 等于时,输出两个数; 2. 大于时,右端移到第2个数,继续判断; 3. 小于时,左端移到第2个数,继续判断。#include <iostream>#include <string>#include <algori原创 2015-09-27 20:17:27 · 5604 阅读 · 1 评论 -
LeetCode–Evaluate Reverse Polish Notation
LeetCode–Evaluate Reverse Polish Notation(LeetCode - 评价逆波兰表示法,即后缀表达式)By X Wang(LeetCode: 一个在线编程网站,里面有很多大公司面试的题目) The problem:问题Evaluate the value of an arithmetic expression in R翻译 2014-05-05 00:59:16 · 1242 阅读 · 0 评论 -
C语言实现的二进制文件复制
//复制文件 void CopyFile(char* s1,char* s2){ FILE * file1,*file2; //使用二进制模式打开文件 file1 = fopen(s1,"rb"); // rb 表示读 file2 = fopen(s2,"wb"); // wb 表示写 if(!file1) { printf("文件%s打开失败!",s1); retu原创 2015-02-10 15:00:18 · 4630 阅读 · 0 评论 -
【算法】普通方法和筛选法求素数
素数指的是因子只有1和本身的数(1不是素数),求解素数在数学上应用非常广泛,而求解n以内的素数也是我们编程时常遇到的问题,在这个问题上,筛选法求解素数运行得非常快。下面首先介绍如何判断一个是不是素数,然后介绍用普通方法求n以内的素数,接着是筛选法求n以内的素数,最后是两种算法的运行时间比较判断一个数是不是素数算法思想:判断小于等于一个数的平方的所有大于1的整数是不是能整除这个数,如果能,则表明这个数原创 2015-04-02 00:09:05 · 6499 阅读 · 5 评论 -
辗转相除法求最大公约数
辗转相除法又名广义欧几里得除法,是用来求解两个数的最大公约数的最佳算法之一。算法原理:原创 2015-03-18 14:31:14 · 12941 阅读 · 4 评论 -
【计算机图形学】DDA(数字微分分析仪)绘制线条
DDA(digital differential analyzer,数字微分分析法)是一种线段扫描转换算法。它的主要算法原理是:在一个坐标轴上以单位间隔对线段取样,从而在另一坐标轴上确定最靠近线条路径的对应坐标值。对于窗口而言,以左下角为原点,底边向右为X轴,以左边向上Y轴为例,画一条线段 L ,原创 2015-03-21 01:09:30 · 2282 阅读 · 0 评论 -
【算法竞赛入门经典】阶乘的精确值
【算法竞赛入门经典】阶乘的精确值问题描述输入不超过1000的正整数n,输出n! = 1x2x3x4x···xn的精确结果. 样例输入:5样例输出:120 算法分析我们需要解决两个问题: 怎么保存结果 乘法过程是怎样的 对于第一个问题:因为1000的阶乘是无法用整数保存的,用double也一样,它的位数会高达两千多位,保存阶乘值的位数,我们只能使用数组,这里使用一个大小为3000的数组;对原创 2015-04-24 17:23:40 · 2247 阅读 · 0 评论 -
【算法学习】贪婪算法找零钱
因为算法比较简单,就不罗嗦了,代码如下://贪婪算法解决找零钱#include <iostream>using namespace std;#define NUM 8static const int permoney[] = { 10000, 5000, 2000, 1000, 500, 100, 50, 10 };void exchange(int* result,float money)原创 2015-04-29 15:25:10 · 2913 阅读 · 0 评论 -
【算法C++】十进制字符串转十六进制字符串
问题描述将一个十进制字符串转化为十六进制字符串。问题解决这个问题如果只是十进制转化为十六进制,其实是比较容易的,只要了解短除法就可以解决了,但题目里数是字符串,这就将题目的难度增高了。因为如果只是int型,那最多也就支持个10位数;但字符串却可以上千位,所以我们使用短除法的时候会比较麻烦。这里我先将字符串转成了int型,先把简单的10位数的实现出来,来理顺一下思路。下面是10进制数转16进制的代码:原创 2015-09-25 16:40:41 · 12858 阅读 · 2 评论 -
【LeetCode】204. Count Primes
问题描述Description:Count the number of prime numbers less than a non-negative number, n.点击查看问题问题分析筛选法求素数,参考这篇文章【算法】普通方法和筛选法求素数,这道题用普通方法求素数会超时,只能用筛选法。代码class Solution {public: int countPrimes(int n) {原创 2017-01-17 14:58:11 · 758 阅读 · 0 评论