![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
小朋友学算法
海天一树
信息学奥赛研究。
展开
-
小朋友学算法(4):求质数的三种基础方法
每次程序设计竞赛出成绩后,很多参赛者的第一反应,就是自己的分低了,想要申诉。这里我的建议是:不要轻易申诉。因为,程序的结果由机器判题。机器判题基本不会出错。这里简单介绍一下编写完程序后到出结果的过程。从编写程序到最终运行出结果,有两个过程:第一是编译。在编译阶段,如果有语法错误,编译器会立马报错。第二是运行。如果能运行结果,说明必然没有语法错误,但是可能有逻辑错误。比如,本来应该是加号...原创 2019-01-08 00:46:26 · 284 阅读 · 0 评论 -
小朋友学算法:对拍程序
一、介绍在做题或者正式比赛过程中,有时候因为样例有坑所以直接过了样例,然后拿去评测结果发现全WA。那如何在这种情况下检查自己程序或算法的正确性呢?对拍是一个简便省事的方案。所谓“对拍”,顾名思义,就是让两者相互比对。所谓“两者”,一是你要测试的程序,二是一个答案在该程序在一定范围(时间/空间)内结果必定正确的程序(一般是用暴力求解的程序)。两个程序准备好编译好了以后,就可以开始准备测试用的输...原创 2019-05-03 21:34:32 · 492 阅读 · 0 评论 -
小朋友学算法19:祘头君的字符
一、题目有n名选手在玩游戏,他们每个人有一个字符,每个字符都有自己固定的若干个特征。特征的种类数为k。每个人的特征为特征总集的一个子集。两个字符的相似度定义为:如果两个字符A和B同时拥有某个特征或者同时没有某个特征,它们的相似度加一。蒜头君想创造出一个字符,它与其它n名选手的字符的相似度分别为a1, a2, …, an,假设其中最大的相似度为ax,蒜头君希望ax尽量小。输入格式输入第一行...原创 2019-03-31 12:30:18 · 579 阅读 · 0 评论 -
小朋友学算法(18):交换机器的最小代价
一、问题描述有N台机器重量各不相等,现在要求把这些机器按照重量排序,重量从左到右依次递增。移动机器只能做交换操作,但交换机器要花费一定的费用,费用的大小就是交换机器重量的和。例如:3 2 1,交换1 3后为递增排序,总的交换代价为4。给出N台机器的重量,求将所有机器变为有序的最小代价(机器的重量均为正整数)。输入第1行:1个数N,表示机器及房间的数量。(2 <= N <= 50...原创 2019-03-24 14:15:40 · 463 阅读 · 0 评论 -
小朋友学经典算法(17):分治法求众数
一组数据中,出现次数最多的数就叫这组数据的众数。如果有两个或两个以上个数出现次数都是最多的,那么这几个数都是这组数据的众数。如果所有数据出现的次数都一样,那么这组数据没有众数。例1:1,2,3,3,4的众数是3。例2:1,2,2,3,3,4的众数是2和3。例3:1,2,3,4,5没有众数。解法一:#include <iostream>#include <algor...原创 2019-03-19 11:26:38 · 1224 阅读 · 0 评论 -
求字符相似度的广度优先搜索问题请教
有n名选手在玩游戏,他们每个人有一个字符,每个字符都有自己固定的若干个特征。特征的种类数为k。每个人的特征为特征总集的一个子集。两个字符的相似度定义为:如果两个字符A和B同时拥有某个特征或者同时没有某个特征,它们的相似度加一。蒜头君想创造出一个字符,它与其它n名选手的字符的相似度分别为a1, a2, …, an,假设其中最大的相似度为ax,蒜头君希望ax尽量小。输入格式输入第一行包含两个整...原创 2019-03-20 22:37:54 · 284 阅读 · 0 评论 -
小朋友学经典算法(16):动态规划之背包问题
背包问题泛指以下这一种问题:给定一组有固定价值和固定重量的物品,以及一个已知最大承重量的背包,求在不超过背包最大承重量的前提下,能放进背包里面的物品的最大总价值。这一类问题是典型的使用动态规划解决的问题,我们可以把背包问题分成3种不同的子问题:0-1背包问题、完全背包和多重背包问题。下面对这三种问题分别进行讨论。一、0-1背包0-1背包问题是指每一种物品都只有一件,可以选择放或者不放。现在...原创 2019-02-22 23:05:39 · 344 阅读 · 0 评论 -
小朋友学算法(15):计算年份的天干地支
十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸;十二地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。天干地支纪年法首先是天干在前,地支在后,比如今年2018就是戊戌年。天干算法:4、5、6、7、8、9、0、1、2、3对应的十天干就是甲、乙、丙、丁、戊、己、庚、辛、壬、癸,这里的数字是年份的最后的一位数字,比如2018年,最后一位是8,对应的天干就是戊。地支算法:用年代数除以1...原创 2018-11-27 16:36:34 · 3849 阅读 · 0 评论 -
小朋友学经典算法(14):回溯法和八皇后问题
一、回溯法回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。二、八皇后问题(一)问题描述在国际象棋中,皇后是最强大的一枚棋子,可以吃掉与其在同一行、列和斜线的敌方棋子。比中国象棋里的车强几百倍,比她那没...原创 2018-10-10 10:09:53 · 452 阅读 · 0 评论 -
小朋友学经典算法(13):两数交换
在学C语言的时候,学过两数交换:《小朋友学C语言(25):两数交换》 https://www.jianshu.com/p/64bc70f0abfe在学C++的时候,也学了两数交换:《小朋友学C++(14):两数交换》 https://www.jianshu.com/p/9a071870e0a0这里咱们要考虑的是,两个数相等的交换情况。#include <iostream&...原创 2018-08-19 23:50:44 · 834 阅读 · 0 评论 -
小朋友学算法(3):求组合数
关于组合的介绍,可以参考小朋友学奥数(12):组合一、利用基本公式,递归#include <iostream>using namespace std;typedef long long ll;ll combination(ll n, ll k){ if(0 == k) { return 1; } return ...原创 2018-06-05 16:46:28 · 511 阅读 · 0 评论 -
小朋友学算法(2):求排列数
关于排列的介绍,可以参考小朋友学奥数(11):排列程序:#include <iostream>using namespace std;typedef long long ll;ll permutation(ll n, ll k){ if(0 == k) { return 1; } return permutatio...原创 2018-06-05 16:45:46 · 274 阅读 · 0 评论 -
小朋友学算法(1):求幂pow函数的四种实现方式
在math.h中,声明了一个函数pow(x, n),用于求x的n次方。 假如咱们不调用math.h中的pow函数,如何实现求x ^ n的算法呢?一、while非递归#include &amp;lt;stdio.h&amp;gt;double pow1(double x, unsigned int n){ int res = 1; while(n--) { ...原创 2018-06-04 16:06:26 · 3698 阅读 · 2 评论