数据结构,算法
文章平均质量分 97
西瓜的夏天啊
这个作者很懒,什么都没留下…
展开
-
最大公约数算法
1、连续整数检测法。#includeusing namespace std;int goc(int m, int n){ int t; if (m>n) t = n; else t = m; while (t) { if (m%t == 0 && n%t == 0) { break; } else t = t - 1; } return t;原创 2017-02-23 13:37:38 · 574 阅读 · 0 评论 -
矩阵连乘的动态规划解法
写出矩阵连乘的自底向上非递归的动态规划算法 或自顶向下递归的动态规划 算法(备忘录方法) 。 输入: 先输入 矩阵连乘的 个数 n , 然后依次手动输入(! 不能随机生成! ) 矩阵的 维数 pi) (数字) 。 注意,6 个矩阵,需输 7 个维数值。 输出:矩阵连乘的次序,如 :((A1(A2A3))((A4A5A6)) 。 示例:输入:6 30 35 15 5 10 20 25原创 2017-06-12 18:47:20 · 1639 阅读 · 0 评论 -
一般背包问题的贪心算法
2.写出一般背包问题的贪心算法。 输入:先输入物品的个数n,再输入背包的容量c,然后依次输入物品的重量wi,最后依次输入物品的价值vi。注意:所有值都不能随机生成!!! 输出:物品的选择向量xi,0=public static void main(String[] args) { Scanner scan=new Scanner(System.in); int n原创 2017-06-22 01:40:14 · 2432 阅读 · 0 评论 -
活动安排问题的贪心算法
1.写出活动安排问题的贪心算法。 输入:先输入活动的个数n,然后依次输入每个活动的开始时间si及结束时间fi。如:时间输入格式为:8:30输入为830。注意:所有值都不能随机生成!!! 输出:活动的选择向量,即0,1的集合。如: 1 0 1 0 1或(1,0,1,0,1) 示例:输入:9 800 1030 900 1130 700 1100 1130 1400 1200 1330 1300 1原创 2017-06-22 01:39:14 · 1058 阅读 · 0 评论 -
算法设计与分析第一次单元考核
第一次单元章节考核 要求: (1)要求动态通过键盘在对话框或命令行输入,而后显示结果(输入输出用scanner或system.in),本次考试的输入不要采用JOptionPane的输入方式; (2)程序检查过后点“提交”按钮,然后关机,走人! 注意: (1)严格按照输入、输出的要求,否则一律0分,补考!!! 题目如下: 1. Ackerman函数的递归实现算法。 输入:输入两个数字,原创 2017-06-12 21:16:18 · 603 阅读 · 0 评论 -
最优二叉搜索树自底向上非递归的动态规划算法
写出最优二叉搜索树的自底向上非递归的动态规划算法。 输入: 首先输入 结点的个数 n , 再依次输入 搜索成功的概率 bi , 最后依次输入 搜 索失败的概率 aj。 。 注意: 所有值都不能随机生成 , 且只输入整数 (概率×100) ) ! ! ! ! 输出: 最优二叉树的结构。 示例: 输入:5 15 10 5 10 20 5 10 5 5 5 10 , 输出: S2 是根 S原创 2017-06-20 11:25:15 · 4917 阅读 · 0 评论 -
爬楼梯问题
//一次只能爬1或2个台阶 //n个台阶有多少个爬法? //第一步,我们可能走1个台阶,那么剩下的就剩下了 f(n-1)中方法,或者第一步走两个台阶,那么那么剩下的就剩下了 f(n-2)种方法,所以f(n)共有 f(n-1)+ f(n-2)中方法 //在写出边界条件,n=1或者n=0,就一种结果 //这个和Fibonacci//先考虑第一步,在考虑第二步,第二步可能与第一部的解法思路相同,(原创 2017-05-09 17:54:36 · 448 阅读 · 0 评论 -
递归的理解
下面是个关于递归调用简单但是很能说明问题的例子:[cpp] view plain copy/*递归例子*/ #include<stdio.h> void up_and_down(int); int main(void) { up_and_down(1); return 0; } void up_and_down(int n) { p转载 2017-04-23 22:24:01 · 267 阅读 · 0 评论 -
逆波兰表达式递归
逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。逆波兰结构由弗里德里希·鲍尔(Friedrich L. Bauer)和艾兹格·迪科斯彻在1960年代早期提议用于表达式求值,以利用堆栈结构和原创 2017-05-09 16:59:12 · 3038 阅读 · 0 评论 -
八/N皇后问题的详解
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。#include<iostream>using namespace std;int Queenarr[101];//这个数组是为了存放皇后的位置,索引为行号,in原创 2017-05-08 23:49:30 · 696 阅读 · 0 评论 -
汉诺卡Hanoi问题详解
有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为H(n)。#include<iostream>using namespace std;//例如有N和盘子在A柱子上,要移到C上,B是中转站作用。//分解简化一下问题,//① 我原创 2017-05-08 19:53:31 · 688 阅读 · 0 评论 -
最长上升子序列(动态规划)
1 7 3 5 9 4 8 找上升子序列(1,7,9),(1,3,4,8)·········,最大为4#include<iostream>#include<algorithm>using namespace std;const int Max = 1010;int nums[Max];int maxLen[Max];int main(){ int n; cin >原创 2017-05-13 10:35:02 · 325 阅读 · 0 评论 -
合并排序(归并排序)的递归和非递归
输入:先输入进行合并排序元素的个数,然后依次随机输入(或随机生成)每个数字。 输出:元素排序后的结果,数字之间不加任何标识符。 示例:输入:8 11 1 2 4 8 6 15 8,输出:1 2 4 6 8 8 11 15#include<iostream>using namespace std;//合并排序/归并排序template<typename T>v原创 2017-05-03 21:31:17 · 1175 阅读 · 0 评论 -
各种排序算法的步骤细解
选择排序://通俗讲解://8 6 2 3 1 5 7 4//从第一个开始往后遍历//先把第一个8当作最小的元素,他的下标为minIndex//从第二个开始往后遍历,查找比8小的数//即6比8小,所以记录6的下标(为1),这时arr[minIndex]为6//继续遍历,2比6小,所以minIndex=2了,这时arr[minIndex]为2,//直到遍历结束,这时第一个位置(下标为0的原创 2017-04-22 16:55:21 · 466 阅读 · 0 评论 -
数字三角形(动态规划)
//运用全递归的话,那样造成大量的重复计算,时间复杂度为2的n次方,太大了//递归如下#include<iostream>#include<algorithm>using namespace std;#define MAX 101int n;int nums[MAX][MAX];//定义两个二维数组int maxsum(int i,int j){ if (i==n)//如原创 2017-05-11 13:30:38 · 649 阅读 · 0 评论 -
按位异或的深入理解
异或运算:首先异或表示当两个数的二进制表示,进行异或运算时,当前位的两个二进制表示不同则为1相同则为0.该方法被广泛推广用来统计一个数的1的位数!参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。即: 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0按位异或的3个特点:(1) 0^0=0,0^1=1 0转载 2017-04-01 20:53:46 · 44534 阅读 · 5 评论 -
C++的标准库的各种容器
unordered_set:class Solution {public: vector findWords(vector& words) { vector res; unordered_set row1{'q','w','e','r','t','y','u','i','o','p'}; unordered_set row原创 2017-03-06 18:47:48 · 524 阅读 · 0 评论 -
01背包的动态规划解法(史无前例的详细)
写出 0-1 背包问题的自底向上非递归的动态规划算法。 输入: 首先输入 物品的 个数 n , 然后输入 背包的 容量 c , 再依次输入每个 物品的 重量 wi , 最后依次输入每个 物品的 价值 vi 。 注意: 所有值都不能随机生成 ! ! ! 输出:物品的选择向量。如:(1,0,0,1,1) 等。 示例:输入:4 5 2 1 3 2 12 10 20 15 输出:1 1 0 1原创 2017-06-13 19:36:42 · 1842 阅读 · 1 评论