算法练习
brilliantZC
work hard!!!
展开
-
蓝桥杯算法训练—未名湖边的烦恼
这一题很明显是一个递归,我们先分析一下: 1.若租的冰鞋数量大于还的冰鞋数量,则无法分配方案会出现无冰鞋可租的现象。 2.若没有租冰鞋的,只有还冰鞋的,则只有一种方案。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)。 3.若租的冰鞋数量小于等于还的冰鞋数量,则可以采取两种方案,先还冰鞋和先租冰鞋。若先还一双冰鞋,下一次又可以分为先还冰鞋和先租冰鞋两种情况,如此...原创 2019-01-24 09:39:35 · 338 阅读 · 1 评论 -
蓝桥杯基础练习—01字串
这题一看就是从小到大输出32个5位二进制(00000——11111),然后就很好处理了,可以把5位二进制存入数组中。每次将最低位加1,然后在做判断,逢二进一,向前进位再输出显示就可以了。 代码如下:#include<iostream>using namespace std;int main(){ int a[5]={0,0,0,0,0}; for(int i=0;i...原创 2019-01-19 12:31:06 · 260 阅读 · 0 评论 -
蓝桥杯基础练习—数列特征
这一题就是简单的求数列中的最大值,最小值和求和,代码如下:#include<iostream>using namespace std;int main(){ int n,min,max,sum=0,a[10000]; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } min=a[0]; max=a...原创 2019-01-19 12:47:09 · 210 阅读 · 0 评论 -
蓝桥杯算法训练—Anagrams问题
这题就是比较两个单词中每一个字母出现的次数(忽略大小写)。我的想法是:首先比较两个单词长度是否相等,若不相等就一定是“N”,若相等就统计第一个单词和第二个单词的字母出现的次数,这里我是用了两个数组计数,先将两个数组赋初值0,然后取出从前往后取出单词每一个字母,若是大写字母就%65,若是小写字母就%97,取模后的值就在0~26之间,然后在统计数组相应位置进行加1操作(这里将计数数组可以理解为:...原创 2019-01-19 13:33:12 · 365 阅读 · 0 评论 -
蓝桥杯算法训练—删除数组零元素
这题就是编写一个实现删除0功能的函数,并明确函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。(这里删除0我并没有真正把0从数组中去掉,而是把不等于0的数一个一个往前赋值,最后返回非零元素的个数,输出就行)。注意传参数时,数组应传址而非传值,不然在函数中修改了数组中的内容,主函数却不变。 代码如下:#include<iostream>usi...原创 2019-01-20 16:07:31 · 494 阅读 · 0 评论 -
蓝桥杯算法训练—最大最小公倍数
这个题是要我们在1~N的范围内找三个数,使他们的最小公倍数在这个范围内的组合是最大的。我的第一印象是找三个两两互质的数,这样只需要相乘即可,就没有需要约分的地方。 接下来说一个数学结论:大于1的两个相邻的自然数必定互质。在1~N的范围,肯定是 n*(n-1)*(n-2)的乘积最大、如果这三个数还两两互质的话那就是要找的答案。 当n是奇数,那么 n、n-1、n-2必定两两互质:n...原创 2019-01-20 17:29:18 · 241 阅读 · 0 评论 -
蓝桥杯算法训练—关联矩阵
这题首先要明白关联矩阵是怎么一回事。关联矩阵是用结点与支路的关系描述有向图的拓扑性质。一条支路连接某两个结点,则称该支路与这两个结点相关联。支路与结点的关联性质可以用关联矩阵描述。设有向图的结点数为 n,支路数为 b,且所有结点与支路均加以编号。于是,该有向图的关联矩阵为一个(n*b)阶的矩阵,用Aij 表示。它的每一行对应一个结点,每一列对应一条支路,它的任一元素 aij定义如下:a...原创 2019-01-20 19:16:30 · 1495 阅读 · 0 评论 -
蓝桥杯算法训练—出现次数最多的整数
这题一开始我以为是一道水题,因为输入的数是从小到大顺序输入的,再一次降低了提莫的难度,但是一提交80分,但因为我不是VIP,只能看到一组测试数据,就开始反思分部调试看自己的代码,但确定自己代码没错后,就更奇怪了,难道这题不简单?我开始百度,原来是自己少考虑了 N&lt;0和N0的情况,加上去后终于AC了,还是自己审题,考虑不周呀。(如果你的得分只有80分,且是第6组和第7组错误,那么你没有考...原创 2019-01-23 16:54:17 · 439 阅读 · 0 评论 -
蓝桥杯算法训练—最小乘积(基本型)
这题并不是很难,要使使得两组数据相同下标元素对应相乘,然后相加的和最小,即只要对两组数据一个从小到大排好序,一个从大到小排好序,然后相应下标元素对应相乘在相加就可以得到和最小的。排序可以用你所熟悉的排序方法(我用的冒泡排序) 代码如下:#include<iostream>using namespace std;int main(){ int t,n,a[8],b[8]...原创 2019-01-23 17:27:04 · 505 阅读 · 0 评论