算法作业
西瓜的夏天啊
这个作者很懒,什么都没留下…
展开
-
二分查找的递归和非递归实现
输入:先输入进行二分搜索元素的个数,然后按大小依次输入(或随机生成,然后排序)每个数字,最后输入要求搜索的元素。 输出:要求搜索元素的下标(下标从0开始!)。 示例:输入:6 1 5 5 6 9 9 6,输出3#include <iostream> using namespace std;int search(int arr[],int l,int r,int key){原创 2017-05-01 01:02:08 · 300 阅读 · 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 评论 -
最优二叉搜索树自底向上非递归的动态规划算法
写出最优二叉搜索树的自底向上非递归的动态规划算法。 输入: 首先输入 结点的个数 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 评论 -
汉诺卡Hanoi问题详解
有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为H(n)。#include<iostream>using namespace std;//例如有N和盘子在A柱子上,要移到C上,B是中转站作用。//分解简化一下问题,//① 我原创 2017-05-08 19:53:31 · 689 阅读 · 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 9 1 2 4 8 6 15 8,输出:1 2 4 6 8 8 9 15/*#include<iostream>using namespace std;void QuickSort(int arr[],int l,int r){ if (原创 2017-05-01 21:33:59 · 5242 阅读 · 0 评论 -
菲波拉契数列Fibonacci递归和非递归
1.写出菲波拉契数列自底向上的非递归动态规划算法或自顶向下的递归动态规划算法(备忘录方法)。 输入:输入一个数字。 输出:输出为Fibonacci数列的值。 示例:输入:5 ,输出:8Fibonacci数列可以递归地定义为: #include<iostream>using namespace std;int Fibonacci(int n)//递归{ if (n==0||n=原创 2017-05-01 20:55:05 · 2460 阅读 · 0 评论 -
整数划分的递归实现算法
输入:输入整数划分的整数(只输入一次,即n==m)。 输出:输入整数的划分个数值。 示例:输入:7,输出:15q(n,m)的如下递归关系定义如下: 正整数n的划分数p(n)=q(n,n)。 #include <iostream> using namespace std;int q(int n,int m){ if (n==1||m==1) { retur原创 2017-05-01 01:14:26 · 1041 阅读 · 0 评论 -
全排列的递归解法
#include <iostream> using namespace std;int total = 0;//交换函数 inline void swapArray(int &a, int &b) //设置成内联函数运行更快{ int temp; temp = a; a = b; b = temp;}//递归函数 void fullPermu原创 2017-04-30 16:31:00 · 1570 阅读 · 0 评论 -
Ackerman函数
顺序为n,m时:#include using namespace std;int ack(int n, int m){ if (n == 1 && m == 0) return 2; else if (n == 0 && m >= 0) return 1; else if (n >= 2 && m == 0) return n + 2; else原创 2017-03-04 19:04:22 · 532 阅读 · 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 评论