![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
^BonnenuIt
这个作者很懒,什么都没留下…
展开
-
递归——算24
递归——分解成子问题 问题 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括 号把这4个数连接起来得到一个表达式。现在的问题是,是否存 在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常 的定义一致(这里的除法定义是实数除法)。 比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此 可以得到24。又比如,对于1,...原创 2020-03-29 16:08:35 · 757 阅读 · 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 package suanfa; ...原创 2020-03-28 22:10:20 · 397 阅读 · 0 评论 -
递归——爬楼梯
加粗样式 问题 树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数, 求不同的走法数 例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一 级,第二次走两级,也可以第一次走两级,第二次走一级,一 共3种方法。 输入 输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= N <= 30输出不同的走法数,每一行输入对应一行 输出 不同的走法数,每一行输入对应一行输出 样例输...原创 2020-03-27 20:59:41 · 973 阅读 · 0 评论 -
递归——四则运算表达式求值
问题 输入为四则运算表达式,仅由整数、+、-、、/ 、(、)组成,没有空格,要求求其值。假设运算符结果都是整数。"/"结果也是整数。 输入:(2+3)(5+7)+9/3 输出: 63 ...原创 2020-03-24 15:54:43 · 376 阅读 · 0 评论 -
递归——逆波兰表达式
问题 逆波兰表达式是一种把运算符前置的算术表达式(其实一般教科书上称这种表达式为波兰表达式) ,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的逆波兰表示法为* + 2 3 4。本题求解逆波兰表达式的值,其中运算符包括+ - * /四个。 输入 输入为一行,其中运算符和运算数之间都用空格分隔...原创 2020-03-22 16:10:19 · 360 阅读 · 0 评论 -
递归——n皇后问题
用递归替代多重循环 n皇后问题:输入整数n, 要求n个国际象棋的皇后,摆在 n*n的棋盘上,互相不能攻击,输出全部方案。 输入一个正整数N,则程序输出N皇后问题的全部摆法。 输出结果里的每一行都代表一种摆法。行里的第i个数字如 果是n,就代表第i行的皇后应该放在第n列。 皇后的行、列编号都是从1开始算。 样例输入: 4 样例输出: 2 4 1 3 3 1 4 2 import java.util....原创 2020-03-21 15:59:04 · 373 阅读 · 0 评论 -
递归——汉诺塔
递归的作用 替代多重循环 解决本来就是用递归形式定义的问题 将问题分解为规模更小的子问题进行求解 阶乘 public static int Factorial(int n){ int m; if (n==0){ m=1; }else{ m=n*Factorial(n-1); } ...原创 2020-03-21 12:38:19 · 125 阅读 · 0 评论 -
枚举——熄灯问题
问题 – 有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行 – 每个按钮的位置上有一盏灯 – 当按下一个按钮后, 该按钮以及周围位置(上边, 下边, 左 边, 右边)的灯都会改变状态 – 如果灯原来是点亮的, 就会被熄灭 – 如果灯原来是熄灭的, 则会被点亮 • 在矩阵角上的按钮改变3盏灯的状态 • 在矩阵边上的按钮改变4盏灯的状态 • 其他的按钮改变5盏灯的状态 与一盏灯毗邻的多个按钮被...原创 2020-03-19 22:35:04 · 201 阅读 · 0 评论 -
枚举——称硬币
问题 有12枚硬币。其中有11枚真币和1枚假币。假币和真 币重量不同,但不知道假币比真币轻还是重。现在, 用一架天平称了这些币三次,告诉你称的结果,请你 找出假币并且确定假币是轻是重(数据保证一定能找 出来)。 输入 第一行是测试数据组数。 每组数据有三行,每行表示一次称量的结果。银币标号为 A-L。每次称量的结果用三个以空格隔开的字符串表示: 天平左边放置的硬币 天平右边放置的硬币 平衡状态。其...原创 2020-03-17 21:10:51 · 240 阅读 · 0 评论 -
枚举——完美立方
要注意abcd的范围,减少无用资源耗费 import java.util.Scanner; public class cube { public static void main(String[] args) { Scanner reader= new Scanner(System.in); int n=reader.nextInt(); ...原创 2020-03-15 16:04:00 · 138 阅读 · 0 评论 -
枚举——生理周期
描述 人生来就有三个生理周期,分别为体力周期、感情周期和智力周期,它们的周期长度分别为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,在智力周期的高峰,人会思维敏捷,注意力容易高度集中。因为三个周期的长度不同,所以通常三个周期的高峰不会落在同一天。对于每个人,想知道何时三个高峰落在同一天。对于每个周期,会给出从当前年份的第一天开始,到出现高峰的天数(不...原创 2020-03-15 17:22:13 · 288 阅读 · 0 评论 -
分治法
分治法:分解,对小问题进行求解,合并小问题结果 合并排序 #define MAX 100 int MergeSort(int A[], int n){ if(n<=1){ return 1; }else{ MergeSort(A,n/2);//对前半部分排序 MergeSort(A+n/2,n-n/2);//后半部分排序 Merge(A,n);//合并 retu...原创 2019-05-04 22:01:37 · 116 阅读 · 0 评论 -
递归
Fibonacci数列 int fib(int n){ int f; if(n<2){ f=1; }else{ f=fib(n-1)+fib(n-2); } return f; } 汉诺塔问题 int main(){ int num; int A=0; int B=0; int C=0; cin>>num; A=num; hanoi(num,...原创 2019-05-04 15:26:27 · 77 阅读 · 0 评论