算法
记录一下被算法欺负的日子
Zouhhhhh
这个作者很懒,什么都没留下…
展开
-
水题2 POJ - 1401
题意就是求n!的结果尾数有多少个0,看大佬的思路是说从1到n的数中有几个5的倍数,如果是10、20、30等等这些数,因子中只有一个5,所以算一次。如果是25,50,75等等这些数,因子中有5的平方,所以算两次。依此规律,125,625等等同样可以这样算。不可以从1到n遍历,否则会TLE。#include<iostream>using namespace std;int ma...原创 2019-10-07 22:14:59 · 87 阅读 · 0 评论 -
水题3 生理周期
D - Biorhythms人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到...原创 2019-10-13 16:50:49 · 236 阅读 · 0 评论 -
水题1POJ 1953
POJ 1953输入一个n,n位数的01串,输出有多少个无连续1组合。当n=1时,有0和1两种结果,当n=2,有3种结果。。。列到4和5就看出是个斐波那契数列。#include<iostream>using namespace std;const int maxn=50;int a[maxn];int main(){ int T; cin>>T;...原创 2019-10-07 21:40:36 · 141 阅读 · 0 评论 -
回溯4 枝条拼接
D - SticksGeorge took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many stic...转载 2019-10-16 23:03:25 · 112 阅读 · 0 评论 -
回溯3 素数环
A ring is compose of n circles as shown in diagram. Put natural number1, 2, …, n into each circle separately, and the sum of numbers intwo adjacent circles should be a prime.Note: the number of fi...原创 2019-10-15 21:15:04 · 255 阅读 · 0 评论 -
1 异或,两个集合中异或位数最小的
For 2 non-negative integers x and y, f(x, y) is defined as the number of different bits in the binary format of x and y. For example, f(2, 3)=1,f(0, 3)=2, f(5, 10)=4. Now given 2 sets of non-negative...原创 2019-10-14 11:49:03 · 658 阅读 · 0 评论 -
回溯2 N皇后问题
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Output共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。Sample Input...原创 2019-10-14 21:33:21 · 395 阅读 · 0 评论 -
汉诺塔
emmm汉诺塔问题,上课没听懂,看了一下慕课才明白了,赶紧拿小本本记一下就是递归嘛,要想把n个盘子从A移到C,那就先把n-1个盘子移到B去,然后是不是剩下最底下那个就可以直接移到C了,然后再把n-1个从B移到C不就完成了。。#include<iostream>using namespace std;void Hanoi(int n,char a,char b,char c)...原创 2019-10-21 09:30:04 · 79 阅读 · 0 评论 -
递归 N皇后
N皇后问题。。。emmm,之前写的对角冲突是用for循环检查左对角和右对角,今天看到个用坐标差绝对值的,记一下记一下这是用一个一维数组表示的,递归求解。那个数组queen[i]=j表示把皇后放到第i行的第j列。#include<iostream>#include<math.h>#include<string.h>#include<algorith...原创 2019-10-21 10:47:07 · 77 阅读 · 0 评论 -
递归 逆波兰表达式
中置表达式:1+2=3前置:+ 1 2=3后置:1 2 +=3这道题说逆波兰表达式是前置就前置吧,题意就是输入一行,其中运算符和运算数直接都用空格分开,输出一个表达式的值。思路就是用递归的思想,首先需要写出逆波兰表达式的定义:(1)一个数是一个逆波兰表达式,值为该数。(2)“运算符 逆波兰表达式 逆波兰表达式 ”是逆波兰表达式,值为两个表达式的值运算的结果。可以看出这是个递归定义,终...原创 2019-10-31 19:45:43 · 241 阅读 · 0 评论 -
递归 算24
输入包括多行,包括4个小于10个正整数,最后一组测试数据中包括4个0表示输入结束。输出如果可以得到24,输出YES,否则NO样例5 5 5 11 1 4 20 0 0 0输出YESNO题意就是给出4个数能否通过±*/四种运算得到24点。思路就是先想出第一步要做什么,先找出2个数进行4种运算,这样就剩下3个数了(一个数是两个数运算后的,还有两个原来的数),再挑出两个。。。剩下一个...原创 2019-11-03 15:25:31 · 178 阅读 · 0 评论 -
递归 放苹果
例题 放苹果把M个苹果放到N个盘子里,允许有的盘子空着不放,问共有多少种不同的分法?每个盘子都是一样的,5,1,1和1,1,5是同一种分法。输入测试数据的数目t(0<=t<=20),然后包含M和N,1<=M,N<=10、输出分法。样例17 3输出8思路就是:首先当盘子大于苹果时,肯定有盘子多,可以表示成当m<n,f(m,n)=f(m,m)。然后考...原创 2019-11-03 10:13:07 · 150 阅读 · 0 评论 -
递归 表达式计算
输入为四则运算表达式,仅由数字、+、-、*、/、(、)组成,没有空格,要求求其值。假设运算符结构都是整数,“/”结果也是整数思路就是递归,首先也要写出表达式的定义(1)表达式由项和“+”、“-”组成。要么是单独一个项,要么就是项+项,项-项(2)项由因子和“/”、“*”组成。要么是单独一个因子,要么就是因子/因子,因子**因子。(3)因子就是两个括号加表达式或整数。可以看出表达式是个递归...原创 2019-10-31 20:50:12 · 858 阅读 · 0 评论 -
递归 走台阶
用递归将问题分解为规模更小的子问题进行求解例题:爬楼梯树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数例如三级楼梯,可以每次走1级,或者第一次走1级第二次走2级,或者第一次走2级第二次走1级,共3种走法。输入N,1<=N<=30,,输出走法数。思路就是写出递推公式,n级台阶的走法=先走1级,n-1级台阶的走法+先走2级+n-2级台阶的走法f(n)=f...原创 2019-11-03 09:41:37 · 510 阅读 · 0 评论 -
数论1 青蛙约会
青蛙约会Description两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可...原创 2019-10-20 17:32:41 · 278 阅读 · 0 评论 -
数论 欧几里得和扩展欧几里得
啃了好几天。。。赶紧记一下一、欧几里得欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。记这个最大公约数c=gcd(a,b)算法就是a%b=c,如果b不等于0,就a=b,b=c,然后一直继续辗转相除法(摘自百度百科)辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。例如,求(319,377):∵ 319÷377=0(余319)∴(319,...原创 2019-10-20 15:52:22 · 171 阅读 · 0 评论 -
分治 归并排序
归并排序的方法就是:(1)把前一半排序(2)把后一半排序(3)把两半归并到一个新的有序数组,然后再拷贝回原数组归并的过程就是将两个数组进行比较,放到一个新的数组中暂时存放。代码#include<iostream>using namespace std;int a[100];int b[100];void merge(int a[],int L,int mid,...原创 2019-11-04 11:00:02 · 91 阅读 · 0 评论 -
2n皇后问题
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。输入格式 输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如...原创 2020-03-15 15:36:47 · 134 阅读 · 0 评论 -
基础练习 Huffuman树(Vector的使用)
问题描述 Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下: 1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa + pb。 2. 重复步骤1,直到{pi}中只剩...原创 2020-03-14 12:47:21 · 173 阅读 · 0 评论 -
大数运算(两数相加)
高精度加法问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a +b的时候,首先将A[0]与B[0]相加,如果有进位...原创 2020-03-14 12:05:02 · 91 阅读 · 0 评论 -
大数运算(1000的阶层)
转载来源:https://blog.csdn.net/lisp1995/article/details/52403507 对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大。就拿50来说,他的阶乘位数是65位,就已经远远超过了long lo...转载 2020-03-14 10:47:34 · 647 阅读 · 0 评论