算法例题
平凡的L同学
个人感兴趣的方向:云计算网络,SDN,网络操作系统,量子通信,机器学习,欢迎讨论。
展开
-
求100内的所有素数(质数)
public class Test2 {public static void main(String[] args) { int a[]=new int[101],i,j; for(i=1;i a[i]=1; } for(i=2;i for(j=i*2;j if(j%i==0){ a[j]=0; }原创 2016-05-31 11:49:58 · 1291 阅读 · 1 评论 -
N皇后问题
题目:请设计一种算法,解决著名的n皇后问题。这里的n皇后问题指在一个nxn的棋盘上放置n个棋子,使得每行每列和每条对角线上都只有一个棋子,求其摆放的方法数。给定一个int n,请返回方法数,保证n小于等于15测试样例:1 返回:1最初的想法是构造一个二维数组的数据结构,然后穷举所有可能的情况,按照这个思路写了一坨东西,最后实在是不忍直视,于是参照网上的一些思路,自己实现了一下。原创 2017-05-15 20:32:22 · 476 阅读 · 0 评论 -
数组的全排列问题
数组的全排列是一种考察递归思想的常考题,当然题目肯定会拐几个弯的~~这里记录一下最基本的全排列的思路: 考察如下的情形: char[] a={'a','b','c'};那么它的全排列是; abc acb bac bca cba cab分析一下步骤:1)固定a,然后后面的两个数进行全排列2)固定b,后面的两个数进行全排列3)固定c,后面的两个数进行全排...原创 2017-05-03 13:43:40 · 757 阅读 · 2 评论 -
最长递增子串问题
eg:一个字符串"1 4 2 3 5",求最长递增子串。结果为"1 2 3 5"最大递增子串的长度为4可以采用动态规划的方法来解决这个问题:我们可以把原问题进行分解,分别求出第1个位置上的递增子串的长度,第2个位置上的xx长度.....第n个位置上的xx长度。。。不妨设置一个数组longest[len]来存储1~n个位置上递增子串的长度,然后在数组中找出最大的那个数,就是最递增原创 2017-03-22 11:06:56 · 3304 阅读 · 0 评论 -
(动态规划问题)机器人走方格
有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。这是一道比较基础的动态规划题目,首先确定一下用什么数据结构来解决这样的一个问题,当然是二维数组了;然后我们再看,d[i][j]的位置只可能由两种可能性,一个是由d[i][j-1]向下移原创 2017-03-11 11:12:38 · 5345 阅读 · 0 评论 -
几种基本的排序算法
1.冒泡排序:冒泡排序的目标就是通过第一次循环将最大(最小)的数找出来,第二次循环将次大(次小)的数找出来....................,冒泡排序在最坏情况下的时间复杂度为O(n^2),平均时间复杂度:O(n^2),最好情况下的时间复杂度是:O(n),比较稳定图解:代码://冒泡排序public class BunnleSort { public stat原创 2016-08-03 21:20:14 · 761 阅读 · 0 评论 -
魔术索引问题
在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个升序数组,元素值各不相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引。eg:[1,2,3,4,5,6,7] false这题貌似很简单,但是这里有一种比较有趣的方法,这里记一下~原创 2017-03-19 10:59:37 · 810 阅读 · 0 评论 -
画图2014-09
问题描述 : 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从 x1到 x2,纵坐标范围从 y1到 y2之间的区域涂上颜色。 下图给出了一个画了两个矩形的例子。第一个矩形是(1,1) 到(4, 4),用绿色和紫色表示。第二个矩形是(2, 3)到(6, 5),用蓝色和紫色表示。图中,一共有 15个单位的面积被涂上颜色,其中紫色部分被涂了两原创 2016-12-30 20:06:04 · 510 阅读 · 0 评论 -
字符串匹配 (2014-9)
问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。 输入格式 输入的第一行包含一个字符串S,由大小写英文字母组成。 第二行包含一个数字,表示大小写敏感的选项,当数字为 0 时表示原创 2016-12-30 20:05:32 · 547 阅读 · 0 评论 -
门禁系统
问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。 输入格式 输入的第一行包含一个整数n,表示涛涛的记录条数。 第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。 输出格式 输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出现。 样原创 2016-12-30 20:03:53 · 809 阅读 · 0 评论 -
相反数
问题描述:有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。 输入格式 第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。 输出格式 只输出一个整数,即这 N 个数中包含多少对相反数。 样例输入 5 1 2 3 -1 -2 样例原创 2016-11-19 19:40:09 · 1962 阅读 · 0 评论 -
窗口
问题描述:在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内容。 当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层窗口,并且这个窗口就会被移到所有窗口的最顶层,而剩余的窗口的层次顺序不变。如果你点击的位置不属于任何窗口,则系统会忽略你这次点击原创 2016-11-19 11:58:26 · 459 阅读 · 0 评论 -
最大矩阵问题
问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。 请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。输入格式 第一行包含一原创 2016-11-01 22:27:18 · 668 阅读 · 0 评论 -
书本ISBN号码校验
问题描述每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字、1 位识别码和 3 位分隔符,其规定格式如“x-xxxxxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如 0-670-82162-4 就是一个标准的 ISBN 码。ISBN 码的首位数字表示书籍的出版语言,例如 0 代表英语;第一个分隔符“-”之后的三位数字原创 2016-10-30 16:08:13 · 6273 阅读 · 3 评论 -
统计出现次数最多的数
问题描述:给定n个正整数,找出他们中出现次数最多的数,如果这样的数有多个,请输出其中最小的一个数:样例:6(数列长度)10 1 10 20 30 20(数列)输出:10思路:先对数组进行排序,然后将数组中的数据和数据出现的次数存放到HashMap中,最后遍历这张哈希表,输出结果。下面给出程序:import java.util.Arrays;import java.原创 2016-10-30 13:53:53 · 2655 阅读 · 0 评论 -
java反射的基本使用
java反射机制的使用是相当广泛,以前掌握的不是太好,趁最近有时间来复习一番。百度百科中对于反射机制是这么介绍的:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;一般我们都是通过new关键字来创建对象的,这个反射到底是何方婶婶?怎么那么牛?不要急,我们先来看一下下面的示意图:每一个.c原创 2016-08-25 16:11:16 · 489 阅读 · 0 评论 -
几种将字符串头尾翻转的方法
方法一:public static String reverse1(String s) { int length = s.length(); if (length <= 1) return s; String left = s.substring(0, length / 2); String right = s.substring(length / 2, length);转载 2016-08-10 12:20:45 · 2157 阅读 · 0 评论