[置顶] 递归求序列最大最小值

这学期总算开了算法课了,不得不吐槽,大四上学期开这课,时间很尴尬。不多说了,第一节课老师留了道题,要求在一个递归函数里求序列的最大最小值。算法思路: 1)如果数组长度为1,则最大值与最小值相等 2)如果数组长度为2,则最大值与最小值各位其中一个。 3)如果数组长度大于2,那么采用二分策略,递归求前一半的最大最小值,与后一半的最大最小值,之后两两比较后的数组的最大最小值。代码如下:#includ...
阅读(164) 评论(0)

算法训练 未名湖边的烦恼

问题描述   每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。   每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法) 输入格式   两个整数,表示m和n 输出格式...
阅读(204) 评论(0)

快速排序

解题思路: 1)设k=a[0], 将k挪到适当位置,使得比k小的元素都在k左边,比k大的元素都在k右边,和k相等的,不关心在k左右出现均可 (O(n)时间完成) 2) 把k左边的部分快速排序 3) 把k右边的部分快速排序Java代码如下:import java.util.Random; import java.util.Scanner;public class Main { public...
阅读(288) 评论(0)

归并排序

归并排序的基本思路: 1) 把前一半排序 2) 把后一半排序 3) 把两半归并到一个新的有序数组,然后再拷贝回原数组,排序完成。 Java代码如下:import java.util.Scanner;public class Main { public static void Merge(int[] num,int start,int mid,int end, int[]...
阅读(204) 评论(0)

算24

给出4个小于10个正整数,你可以使用加减乘除4种运算以及括 号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常 的定义一致(这里的除法定义是实数除法)。 比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因 此可以得到24。又比如,对于1,1,4,2,我们...
阅读(191) 评论(0)

简单的整数划分问题

总时间限制: 100ms 内存限制: 65536kB 描述 将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。 正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。输入 标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50)。 输出 对于每组测试数据,输出N...
阅读(364) 评论(0)

放苹果

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问 共有多少种不同的分法?5,1,1和1,5,1 是同一种分法。 输入 第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整 数M和N,以空格分开。1<=M,N<=10。 输出 对输入的每组数据M和N,用一行输出相应的K。 样例输入 1 7 3 样例输出 8解题思路: 设i个苹果放在k个盘子里放...
阅读(238) 评论(0)

爬楼梯

树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数, 求不同的走法数 例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一 级,第二次走两级,也可以第一次走两级,第二次走一级,一 共3种方法。 输入 输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= N <= 30输出不同的走法数,每一行输入对应一行 爬楼梯 输出 不同的走法数,每一行输入对应一行输出 样例输...
阅读(350) 评论(0)

N皇后问题

n皇后问题:输入整数n, 要求n个国际象棋的皇后,摆在 n*n的棋盘上,互相不能攻击,输出全部方案。 输入一个正整数N,则程序输出N皇后问题的全部摆法。 输出结果里的每一行都代表一种摆法。行里的第i个数字 如果是n,就代表第i行的皇后应该放在第n列。 皇后的行、列编号都是从1开始算。 样例输入: 4 样例输出: 2 4 1 3 3 1 4 2...
阅读(180) 评论(0)

汉诺塔问题(递归实现)

古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小 不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移 到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子 始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求输出移动 的步骤。 import java.util.Scanner;public class Main { static i...
阅读(151) 评论(0)

算法训练 2的次幂表示

问题描述   任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。   将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0   现在约定幂次用括号来表示,即a^b表示为a(b)   此时,137可表示为:2(7)+2(3)+2(0)   进一步:7=2^2+2+2^0 (2^1用2表示)   3=2+2^...
阅读(136) 评论(0)

算法训练 6-1 递归求二项式系数值

问题描述 样例输入 一个满足题目要求的输入范例。 3 10 样例输出 与上面的样例输入对应的输出。 120 数据规模和约定   输入数据中每一个数的范围。   例:结果在int表示时不会溢出。package 递归求二项式系数值;import java.util.Scanner;public class Main { public static int Combinatio...
阅读(686) 评论(1)
    个人资料
    • 访问:78203次
    • 积分:3567
    • 等级:
    • 排名:第9575名
    • 原创:267篇
    • 转载:0篇
    • 译文:0篇
    • 评论:63条
    博客专栏
    最新评论