目录

  • 算法填充题
    • 子集生成问题
    • 全排列生成问题
    • 哈密顿回路问题
    • 八皇后问题
    • 最大子段和问题
    • 最长公共子序列问题
  • 综合题
    • 1. 贪心法(设计+证明)
    • 2.0/1背包问题(证明+动态规划法计算过程)
    • 3.货币兑付问题(证明+动态规划法计算过程)
    • 4.多段图最短路径问题(证明+动态规划法计算过程)
    • 5.多机调度或批处理调度(限界函数设计+搜索过程)
    • 6.TSP问题(搜索空间树及算法)

算法填充题

子集生成问题

  • 问题描述

子集生成是暴力求解算法中比较经典的问题,给出集合A,求得相应的子集,进行打印。

  • 解法一:增量构造法
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define INF 300
int A[100];
void print_subset(int n,int *A,int cur)
{for(int i=0;i<cur;i++)printf("%d ",A[i]);//输出子集 当前的集合 printf("\n");int s=cur?A[cur-1]+1:0;//确定当前最小的可能值  如果这里不是 这里特殊的就是cur==0时 其他的就是选比前一个大1的 for(int i=s;i<n;i++){A[cur]=i;//将i加入当前的集合print_subset(n,A,cur+1);// 递归构造子集 }
}
int main()
{int n;scanf("%d",&n);print_subset(n,A,0);
}
  • 解法二:位向量法
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define INF 300
int B[100];
void print_subset(int n,int *B,int cur)
{if(cur==n){for(int i=0;i<cur;i++)if(B[i])printf("%d ",i);printf("\n");return ;}B[cur]=1;print_subset(n,B,cur+1);//选 B[cur]=0;print_subset(n,B,cur+1);//不选
}
int main()
{int n;scanf("%d",&n);print_subset(n,B,0);
}
  • 解法三:二进制法(简单)
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define INF 300
int B[100];
void print_subset(int n,int s)
{for(int i=0;i<n;i++)if(s&(1<<i))printf("%d ",i);printf("%n");
}
int main()
{int n;scanf("%d",&n);for(int i=0;i<(1<<n);i++)print_subset(n,i);
}
原文链接:https://blog.csdn.net/liyanfeng1996/article/details/52821868

全排列生成问题

  • 问题描述

对于给定的集合A{a1,a2,…,an},其中的n个元素互不相同,如何输出这n个元素的所有排列(全排列)。

  • 算法实现 (递归)
#include <iostream>
using namespace std;
const int maxn=1000;
int a[maxn];
void swap(int i,int j)
{int temp=a[i];a[i]=a[j];a[j]=temp;
}
void perm(int k,int m,int pk,int pm)//k,m一般取起始和终点位置,k是不断变化的
{//k是中间变量,m初始化为参与拍列元素的起始坐标和终止坐标//pk和pm分表表示参与排列元素的起始和终止坐标,不变的量。if(k==m){//当k换到最后的时候,便是出口,是已经交换好的序列for(int i=pk;i<=pm;i++) cout<<a[i];cout<<endl;}else{for(int i=k;i<=m;i++){swap(k,i);//一部分一部分的交换,最后进行还原perm(k+1,m,pk,pm);//模拟一下过程,一开始求解N确定一个元素后,求解N-1,依次类推。swap(k,i);//还原}}
}
int main()
{int x;cin>>x;for(int i=1;i<=x;i++)a[i]=i;perm(1,x,1,x);return 0;
}
原文链接:https://blog.csdn.net/qq_29980371/article/details/72553303

哈密顿回路问题

  • 问题描述

  • 算法

  • 算法实现

采用邻接矩阵存储,数组 arc[n][n] 存储顶点之间的边的情况,为了避免在函数之间传递参数,将数组arc设为 全局 变量,设数组 x[n] 表示哈密顿回路经过的顶点。

八皇后问题

  • 问题描述

在8 x 8的棋盘上摆放8个皇后,而且八个皇后中的任意两个是不能处于同一行、同一列、或同一斜线上。也可以拓展到n皇后问题,即在n✖n的棋盘上摆放n个皇后,使任意两个皇后都不能处于同一行、同一列或同一斜线上。

  • 算法

  • 算法实现

皇后k摆放在k行x[k]列的位置


最大子段和问题

  • 问题描述
  • 算法实现

变量center表示序列的中间位置,数组 a[n] 存放整数序列

最长公共子序列问题

  • 问题描述
  • 算法实现

综合题

1. 贪心法(设计+证明)

贪心算法的设计思想:

  • 贪心算法在解决问题的策略上目光短浅,只根据当前已有的信息就做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。换言之,贪心法并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。贪心算法对于大部分的优化问题都能产生最优解,但不能总获得整体最优解,通常可以获得近似最优解

贪心算法的证明:


2.0/1背包问题(证明+动态规划法计算过程)

  • 证明(反证法
  • 动态规划法计算过程

3.货币兑付问题(证明+动态规划法计算过程)

  • 题目: 在面值为(v1, v2, …, vn)n种货币中,需要支付y值的货款,应如何支付才能使货币支付的张数最少。设计动态规划算法求解该问题。

  • 证明

  • 解决

    示例:面值(1, 2, 5, 10),支付8

    示例:面值(2, 5, 10),支付8

4.多段图最短路径问题(证明+动态规划法计算过程)

  • 问题

  • 证明

  • 动态规划法计算过程

5.多机调度或批处理调度(限界函数设计+搜索过程)

  • 问题描述

  • 限界函数设计

  • 搜索过程

    (1)在根结点,将sum1和sum2分别初始化为0,估算目标函数的上界为41,将根结点加入待处理结点表PT.

6.TSP问题(搜索空间树及算法)

  • 问题描述 假设有一个旅行商要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。旅行商有一个要访问城市的列表和每两个城市之间旅行的开销。需要求出开销最短的一种走法。
  • 搜索空间树
  • 算法

算法设计与分析期末复习大全(算法填充题+综合题)相关推荐

  1. 计算机算法设计与分析期末考试试卷,算法设计与分析期末考试卷及答案a

    <算法设计与分析期末考试卷及答案a>由会员分享,可在线阅读,更多相关<算法设计与分析期末考试卷及答案a(15页珍藏版)>请在人人文库网上搜索. 1.一填空题(每空2分,共30分 ...

  2. 算法设计与分析--期末复习重点总结

    目录 一.算法概述 1.算法的定义与特性 2.数学证明法 3.算法复杂性分析方法 4.渐进分析 二.递归与分治策略 1.递归概念 2.递归算法设计示例 3.递归算法分析 4.分治基本思想 5.分治算法 ...

  3. 哈工大2019年春算法设计与分析期末复习

    本文原载于我的博客,地址:https://blog.guoziyang.top/archives/22/ 第二章 算法分析的数学基础 2.1 复杂性函数的阶 阶为复杂性函数的主导项. 如函数 T ( ...

  4. 算法设计与分析期末复习不挂科

    算法的基本概念 算法概念 通俗讲:算法是解决问题的一种方法或一个过程 严格讲:算法是解某一特定问题的一组有穷规则的集合 且满足以下性质: 有限性:算法在执行有限步之后必须终止 确定性:算法的每一个步骤 ...

  5. 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...

    中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...

  6. 算法设计与分析课程复习笔记11——单源最短路径

    算法设计与分析课程复习笔记11--单源最短路径 单源最短路径 最短路径问题 输入:有权有向图G=(V,E) 路径p={ v 0 , v 1 , . . . , v k v_0, v_1, . . . ...

  7. 2020-2021中科院陈玉福算法设计与分析期末考试

    2020-2021中科院陈玉福算法设计与分析期末考试 中科院沈阳计算所 时文康 于2020.12.31 一.(20 分)简答题 1,陈述算法在最坏时间下的时间复杂度和平均时间复杂度:这两种评估算法复杂 ...

  8. 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案...

    中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...

  9. 计算机算法设计与分析期末试题,算法设计与分析期末考试试卷(D卷)(含答案).doc...

    算法设计与分析期末考试试卷(D卷) 一.选择题(0分,每题分) .D A.n2/2 + 2n的渐进表达式上界函数是O(2n) B.n2/2 + 2n的渐进表达式下界函数是Ω(2n) C.logn3的渐 ...

  10. 算法设计与分析考前复习

    算法设计与分析考前复习 qiwang的NOJ系统在考前一天崩了,强烈建议开发新OJ 另外,由于以下这些题是我上完数电实验用了下午和晚上时间写的,可能会出一些错. 分治法复习 二分查找 描述 给定一个单 ...

最新文章

  1. python2 队列的使用_python双端队列原理、实现与使用方法分析
  2. Android自定义Dialog及与Activity的交互
  3. Qt工作笔记-对QImage的进一步认识(关于α通道)
  4. Day05:装饰器,三元表达式,函数的递归,匿名/内置函数,迭代器,模块,开发目录...
  5. 【VMware vSAN 6.6】2.5.硬件部署选项:我们有软硬件项目解决方案
  6. DRILLNET 2.0------第十八章 起下钻水力参数计算模型
  7. 三星香港 android8.0,三星A8 Star官方港版安卓8.0固件刷机包:TGY-G8850ZHS3ASD1
  8. JavaWebDay13_课程回顾,Tomcat软件,Servlet入门.
  9. 【Android安全】Android root原理及方案 | Magisk原理
  10. 怎么把解压的文件在HTML打开,解决电脑rar压缩包文件怎么打开?教你正确打开方式...
  11. 2022-2027年中国卫星遥感行业市场深度分析及投资战略规划报告
  12. 接口与继承系列教材 (十)- Java 内部类详解
  13. 第一颗国产 TTL 转 HDMI 1.4,视频信号转换芯片LT8618EXB
  14. CBS paper防伪安全纸
  15. Java集合之Set集合
  16. 全球与中国厂内物流自动化市场深度研究分析报告
  17. 视频号容易被限流的8个雷区,这些规则你一定要知道!
  18. el+vue实战 ② 在el-table中的每一行加上头像/图片;去掉div标签自动换行问题;el-table表格中实现字数限制,只显示一行
  19. UED专栏 | 携程机票订后服务“航班助手”的三大设计秘籍
  20. VS2017制作包dtsx 碰见的一些问题(反序列化-复制变量等)

热门文章

  1. 6款强烈推荐的PDF阅读器
  2. 关于微信小程序的相关接口以及问题
  3. .Net6项目部署IIS步骤
  4. c# asp.net 测试程序执行时间
  5. 生产系统建模仿真软件FactorySimulation
  6. MT4 服务器信号,手机实时接收MT4软件指标信号(简单几步设置搞定)
  7. jQuery文档加载完毕的几种写法
  8. matlab figure函数怎么用,Matlab学习笔记 figure函数
  9. 电脑是否入侵,是否留有后门
  10. 【全开源商城小程序源码】ThinkPHP 5.1+带后台商城源码程序+带详细安装使用文档