自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 分支界限篇---加1乘2平方NOJ1541

加1乘2平方时限:1000ms 内存限制:10000K 总时限:3000ms问题描述:给定两个正整数m、n,问只能做加1、乘2和平方这三种变化,从m变化到n最少需要几次输入:输入两个10000以内的正整数m和n,且m小于n输出:输出从m变化到n的最少次数输入示例输出示例基本思路:对每个位置从1开始进行试探,并且保证当前所试的数字(1)与之前填过的数字不重复(2)与前一位置的数的和为素数(3)最后一个填写的数与第一个填写的数之和是素数在填写第k个位置时,如果满足上述约束条件

2020-11-12 21:50:40 349

原创 算法--分枝界限法

这里是@嘉禾何鹤的第二篇学习笔记文章目录这里是@嘉禾何鹤的第二篇学习笔记一、分支界限法概念:与回溯法的区别设计思想常用方法一、分支界限法概念:采用广度优先搜索,并在生成当前结点的孩子结点时,通过一些限界条件即剪枝函数,帮助避免生成不包含解结点子树的状态空间的检索方法。 分枝限界法提高了求解问题的效率与回溯法的区别求解目标:回溯法:找出解空间树中满足约束条件的所有解;分枝限界法:找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。搜索方式:回溯法:深度优先的方式搜

2020-11-10 23:19:52 643

原创 回溯篇---素数环问题NOJ1008

素数环问题时限:1000ms 内存限制:10000K 总时限:3000ms问题描述:把1到20这重新排列,使得排列后的序列A满足:a. 任意相邻两个数之和是素数b. 不存在满足条件a的序列B使得:A和B的前k(0 <= k <= 19)项相同且B的第k+1项比A的第k+1项小。(即按字典序排列的第一项)输入:没有输入。输出:输出A,两个数字之间用一个空格隔开,第一个数字前面和最后一个数字后面没有空格。输入示例输出示例基本思路:对每个位置从1开始进行试探,并且保证当前所

2020-11-06 00:25:24 416

原创 回溯篇---全排列问题

全排列问题描述对于给定的正整数n(n>=1),求1~n的所有全排列输入示例3输出示例123 132 312 213 231 321基本思路:就很简单……查数字是否之前被用过,然后回溯……代码实现:#include <iostream>using namespace std;int n;//输入表示n位数int solution;//解的个数int set[10000];//记录某一位置的数字int mark[10000];//标记该数字void df

2020-11-05 23:21:01 332

原创 回溯篇---图的m着色问题NOJ1575

图的m着色问题时限:1000ms 内存限制:10000K 总时限:3000ms问题描述:给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的。图的m着色问题是对于给定图G和m种颜色,找出所有不同的着色法。输入:第1行有3个正整数n,r 和m(n < 20,r < 200,m < 10),表示给定的图G有n个顶点和r条边,m种颜色。顶点编号为0,1,2,…,n-1。接下来的r行

2020-11-04 00:52:08 405

原创 回溯篇---8皇后NOJ10078

8皇后问题时限:1000ms 内存限制:10000K 总时限:3000ms问题描述:在8×8( n×n )格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。输入:没有输入输出:每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。输入示例输出示例提示

2020-11-04 00:02:23 146

原创 回溯篇---0-1背包问题NOJ1004

0-1背包问题:时限:1000ms 内存限制:10000K 总时限:3000ms问题描述:需对容量为c 的背包进行装载。从n 个物品中选取装入背包的物品,每件物品i 的重量为wi ,价值为pi 。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高。输入:多个测例,每个测例的输入占三行。第一行两个整数:n(n<=10)和c,第二行n个整数分别是w1到wn,第三行n个整数分别是p1到pn。n 和 c 都等于零标志输入结束。输出:每个测例的输出占一行

2020-11-02 22:28:16 959

原创 算法--回溯法

这里是@嘉禾何鹤的第二篇学习笔记文章目录这里是@嘉禾何鹤的第二篇学习笔记前言一、What is回溯?二、回溯法一般思路剪枝函数子集树排列树非子集树,非排列数解题步骤三、这是一张图文无关的 彩蛋?前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、What is回溯?回溯法是是一种类似穷举的搜索过程,以深度优先的原则,对结果进行逐一试探,当发现某一结点不满足答案的条件时,就回溯(

2020-10-30 20:41:14 160

原创 递归分治篇---循环赛日程表NOJ1243

循环赛日程表:时限:1000ms 内存限制:10000K 总时限:3000ms问题描述:对于 n=2 个选手,设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次;(2)每个选手一天只能赛一次;(3)循环赛一共进行n-1天。用分治算法生成循环赛日程表(1到2的n次方个人)输入:一个小于等于7的正整数n输出:循环赛日程表(1到2的n次方个人)输入示例输出示例基本思路:(1)将所有的选手分为两半,n个选手的比赛日程表就可以通过为n/2个选手设计的比

2020-10-29 00:46:48 424

原创 递归分治篇---归并排序NOJ1002

归并排序:时限:1000ms 内存限制:10000K 总时限:3000ms问题描述:给定一个数列,用归并排序算法把它排成升序。输入:第一行是一个整数n(n不大于10000),表示要排序的数的个数;下面一行是用空格隔开的n个整数。输出:输出排序后的数列,每个数字占一行。输入示例输出示例基本思路二路归并:自顶向下:自底向上:为什么觉得自顶向下就是比自底向上要先多了一步分解呢……具体过程归并:(1) 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序

2020-10-28 01:21:28 184

原创 递归分治篇---寻找第K小数NOJ1574

算设设计与分析 —递归与分值求第k小数时限:1000ms 内存限制:10000K 总时限:3000ms功能快捷键撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + Shift + H无序列表:Ctrl/Command + Shift + U有序列表:Ctrl/Command + Shift + O检查列表:Ctrl/Command + Shift +

2020-10-27 00:42:03 653

原创 递归分治篇---快速排序NOJ1003

快速排序:时限:1000ms 内存限制:10000K 总时限:3000ms问题描述:给定一个数列,用快速排序算法把它排成升序。输入:第一行是一个整数n(n不大于10000),表示要排序的数的个数;下面一行是用空格隔开的n个整数。输出:输出排序后的数列,每个数字占一行。输入示例:输出示例基本思路在待排序的元素中任选(通常选择第一个)一个作为基准,把该元素放入最终位置后,整个数据序列被基准分割为两个子序列,所有小于基准的元素被放在左子列中,所有大于基准的元素被放在右子列,并把基准排在

2020-10-26 00:22:22 195

转载 这是本应在一年前学习的Debug

Debug前言一、背景介绍二、来看一些可能的错误语法错误连接错误逻辑错误运行错误三、调试过程断点调试查看变量查看内存前言这里是嘉禾与她的Debug(暴风哭泣)真的真的太绝望了,第一节上WX老师的C程实验课就是讲的Debug,但是对于我这种脑回路发育失败的人来说,讲一遍怎么可能掌握,于是懒癌作怪,接下来也一直没有再去自主学习这个东西。说来神奇,写了一年的代码了,竟也从未用过Debug,果真不是一个专业的程序员,必然也没有在这个过程种学到什么知识。但确实有很多逻辑上的问题,没有error和warning,

2020-10-25 20:49:41 93

原创 递归分治篇---二分查找NOJ1001

二分查找时限:1000ms 内存限制:10000K 总时限:3000ms问题描述:给定一个单调递增的整数序列,问某个整数是否在序列中。输入:第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。输出:每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。输入示例输出示例基本思路设a[low…high]为查找空间,首先确定该区间的中点位置mid=[low+h

2020-10-25 18:46:23 270

原创 算法--递归与分治

算法-chapter2递归与分治-概述这里是@嘉禾何鹤的第一篇学习笔记文章目录这里是@嘉禾何鹤的第一篇学习笔记前言递归一、What is 递归?二、递归分类三、能够用递归解决的问题分治能够用分治解决的问题分治法的求解过程分治法的一般的算法设计模式这是一张图文无关的 彩蛋?前言决心当一名程序员的第一个月过去啦,得弊于大一C基础打得着实不够扎实,第一门专业课就给自己来了当头一棒,不能像别的科目靠手写笔记来总结啦,试着尝试一种新的方式,同样的手过千遍,下面就开始啦!递归一、What is 递归?

2020-10-25 17:16:09 200

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除