
算法
白学家Lynn
不要打死我
展开
-
第七届蓝桥杯取球博弈详解
取球博弈两个人玩取球的游戏。一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目。如果无法继续取球,则游戏结束。此时,持有奇数个球的一方获胜。如果两人都是奇数,则为平局。假设双方都采用最聪明的取法,第...原创 2018-03-18 17:17:54 · 3709 阅读 · 0 评论 -
并查集入门经典题:畅通工程
Problem Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;...原创 2018-03-18 22:17:34 · 749 阅读 · 0 评论 -
蓝桥杯之三羊献瑞
三羊献瑞观察下面的加法算式: 祥 瑞 生 辉 + 三 羊 献 瑞------------------- 三 羊 生 瑞 气(如果有对齐问题,可以参看【图1.jpg】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。思路:暴力破解就好,值得注意的是,一开始就能推出三这个汉字的值,因为两个四位数相加等...原创 2018-03-22 22:28:05 · 1190 阅读 · 0 评论 -
蓝桥杯之快速排序详解
快速排序排序在各种场合经常被用到。快速排序是十分常用的高效率的算法。其思想是:先选一个“标尺”,用它把整个队列过一遍筛子,以保证:其左边的元素都不大于它,其右边的元素都不小于它。这样,排序问题就被分割为两个子区间。再分别对子区间排序就可以了。下面的代码是一种实现,请分析并填写划线部分缺少的代码。注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。#include <stdio.h&...原创 2018-03-22 22:50:59 · 2560 阅读 · 0 评论 -
蓝桥杯之包子凑数
标题:包子凑数小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然...原创 2018-03-29 21:07:13 · 680 阅读 · 0 评论 -
蓝桥杯之9数算式
观察如下的算式: 9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。 而乘积恰好也是用到了1~9的所有数字,并且每个1次。 请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个? 注意: 1. 总数目包含题目给出的那个示例。 2. 乘数和被乘数交换后作为同一方案来看待。思路:数据量很大,如果无脑for循环将会造成O(n3)的复...原创 2018-03-29 23:19:17 · 2198 阅读 · 2 评论 -
博弈论之双人取数游戏详解
描述有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的两端取数,取数后该数字被去掉并累加到本玩家的得分中,当数取尽时,游戏结束。以最终得分多者为胜。编一个执行最优策略的程序,最优策略就是使玩家在与最好的对手对弈时,能得到的在当前情况下最大的可能的总分的策略。你的程序要始终为第二位玩家执行最优策略。格式PROGRAM ...原创 2018-03-26 23:04:19 · 6873 阅读 · 0 评论 -
java实现简单任意进制互转
思路:输入一个字符串,将他转换成10进制,然后再将10进制的数转换成其他进制java中Integer类有一个相当好用的进制转换功能int num = Integer.parseInt("21A1",11)这句就会自动把21A1这个11进制数转换成10进制。10进制数转换成其他进制就不再赘述,网上有很多一搜一大把。最后上代码,代码还是相当简洁的,缺点是无法应对大数据,有兴趣的同学也可以自行改成Big...原创 2018-03-27 22:27:54 · 2726 阅读 · 1 评论 -
java使用BigInteger进行进制转换
在java中,BigInteger类自带三十六进制内任意转换功能简单的就一行代码:String string = new BigInteger("3244",5).toString(30); System.out.println(string);以上意思为把3244这个五进制数转成三十进制的数...原创 2018-03-28 14:56:53 · 8415 阅读 · 0 评论