题意:给你n个数,k个魔法棒,s为所求的数,然后让你找有多少种方法,能够使的这n个数之和为s,其中一个魔法棒可以使的一个数变成他的阶乘。
思路:采用折半搜索,自己太渣。。请看这位大神详解~...
分类:
其他好文 时间:
2015-03-29 12:17:12
阅读次数:
217
题目地址:Anya and Cubes
比赛的时候居然没想起中途相遇法。。。这题也是属于想起来就很简单系列。
中途相遇法也叫折半搜索。就是处理前一半,把结果储存起来,再处理后一半,然后匹配前一半存储的结果。
代码如下:#include
#include
#include
#include
#include <algo...
分类:
其他好文 时间:
2015-03-27 22:17:27
阅读次数:
224
能否找到一个保证线性时间性能的算法,这个问题非常难。还有一些改进加权快速合并算法的简单方法。理想情况下,我们希望每个结点直接连到其树根,但又不想像快速合并算法那样改变大量连线。我们可以简单地把所检查的所有结点连到根上,从而接近理想情况。我们可以很容易地实现..
分类:
编程语言 时间:
2015-03-21 21:33:46
阅读次数:
180
插入算法很多,无论是在内功修炼,各种笔试面试都是相当有用的。接下来,将陆续将各种排序算法进行练习:
主要分为以下几个部分(其他后面学习补充):
一、插入类排序:1、直接插入排序;2、折半插入排序;3、希尔shell排序;
二、交换类排序:1、冒泡排序 ;2、快速排序;
三、选择类排序:1、简单选择; 2、堆排序;
本人多使用Java——开始吧!
首先推荐维基百科《排序算法》词条...
分类:
编程语言 时间:
2015-03-20 12:55:22
阅读次数:
187
1.直接插入排序
《算法导论》P10,《数据结构》P265
向已经排好序的数组a[1..j-1]插入a[j],进行一趟循环遍历。插入排序的基本操作是在一个有序表进行查找和插入。每一趟插入排序从后往前进行比较,便于数组中元素的向后移动。
空间复杂度:O(1)(当使用swap交换时,可实现原址)
时间复杂度:(n^2)/4
即O(n^2)
2.拓展
1)折半查找排...
分类:
编程语言 时间:
2015-03-16 16:29:20
阅读次数:
204
查找算法一、查找的基本概念查找,也可称检索,是在大量的数据元素中找到某个特定的数据元素而进行的工作。查找是一种操作。二、顺序查找针对无序序列的一种最简单的查找方式。时间复杂度为O(n)。三、二分查找(折半查找)针对已排序序列的一种查找方式。并且只适用于顺序存储结构的序列。要求序列中的元素基本不变,在...
分类:
编程语言 时间:
2015-03-12 22:32:03
阅读次数:
629
算法说明:归并排序的思路就是分而治之,将数组中的数字递归折半进行排序。 递归到最底层就只剩下有两个数字进行比较,再从底层往下进行排序合并。最终得出结果。同样,语言描述可能对于不知道这个算法的人来说,理解的比较吃力,所以还是举个例子来简单说明一下。首先,测试数据是int[] arrayData = {...
分类:
编程语言 时间:
2015-03-12 19:06:29
阅读次数:
152
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。C++源代码: 1 // 二分查找.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h"....
分类:
其他好文 时间:
2015-03-12 15:04:16
阅读次数:
92
/* * 二分查找算法也称为折半搜索、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。 * 请注意这种算法是建立在有序数组基础上的。 * */public class BinarySearch { public static void main(String[] args) { ...
分类:
编程语言 时间:
2015-03-11 17:06:42
阅读次数:
115
查找方式:顺序查找和折半查找(二分查找);如果数据已排序,可使用折半查找和顺序查找;如果数据未排序,使用顺序查找。 顺序查找速度慢。#include using namespace std;int SequentialSearch(int List[], const int size, con...
分类:
其他好文 时间:
2015-03-10 11:52:36
阅读次数:
128