- 博客(15)
- 收藏
- 关注
原创 枚举算法实践6-数组配对 C++
题目描述给你一个长度为n的数组和一个正整数k,问从数组中任选两个数使其和是k的倍数,有多少种选法对于数组a1=1 , a2=2 , a3=2而言:(a1,a2)和(a2,a1)被认为是同一种选法;(a1,a2)和(a1,a3)被认为是不同的选法。输入数据第一行有两个正整数n,k。n<=1000000,k<=1000000 第二行有n个正整数,每个数的大小不超过1e9输出数据选出一对数使其和是k的倍数的选法个数样例输入5 61 2 3 4 5样例输出2样
2021-12-25 12:14:10 994
原创 枚举算法实践5-移除石头 C++
题目描述有一条河,河中间有一些石头,已知石头的数量和相邻两块石头之间的距离。现在可以移除一些石头,问最多移除m块石头后(首尾两块石头不可以移除),相邻两块石头之间的最小距离的最大值是多少。输入数据第一行输入两个数字,n(2<=n<=1000)为石头的个数,m(0<=m<=n-2)为可移除的石头数目 随后n-1个数字,表示顺序和相邻两块石头的距离d(d<=1000)输出数据输出最小距离的最大值样例输入4 11 2 3样例输出3解题思路找到
2021-12-25 11:30:50 1909
原创 分治算法实践6-气球游戏 戳气球 C++
题目描述刚刚今天去游乐场玩,发现了一个新的游戏项目,游戏是这样的,场上一共有 n 个气球,它们的编号是0到n-1,然后每个气球上还有一个数字,我们使用数组nums来保存这些数字。现在游戏要求刚刚戳破所有的气球。每当刚刚戳破一个气球i时,刚刚可以获得nums[left] * nums[i] *nums[right]个积分。这里的left和right指的是和i相邻的两个气球的序号。(注意每当刚刚戳破了气球i后,气球left和气球right就变成了相邻的气球。)求刚刚所能获得积分的最大值。输入数据
2021-12-19 21:36:08 4362
原创 分治算法实践5-小明的散步路径 C++
题目描述小明有一个爱好,他喜欢在一个无限大的平面上散步,并且他散步的路径是有规律的。每次他会从(1,1)点出发,经过2n x2n个点,最后在(2n,1)处停下。 他第1、2、3天的散步路径如下图所示。当n>1时,他第n天的散步路径可以通过如下方法构造:1 将第n-1阶的路径顺时针旋转90度,之后放在左下角;2 将第n-1阶的路径放在左上角;3 将图形沿着中轴线对称构造右半部份;4 用3条单位线段把四部分连接起来。现在,小明想要知道,他在第n天走过的某个格子是他 当天走过的第几个
2021-12-19 20:47:14 2633 4
原创 分治算法实践3-整数的幂次方表示 C++
题目描述任何一个正整数都可以用2的幂次方表示。例如137=27+23+20。 同时约定方次用括号来表示,即ab可以表示为a(b).由此可知,137可表示为2(7)+2(3)+2(0) 进一步:7=22+2+20(21用2表示),并且3=2+20。所以最后137可表示为2(2(2)+2+2(0))+2(2+2(0))+2(0)。又如1315=210+28+25+2+1,所以1315最后可表示为2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)。输入
2021-12-18 16:32:35 1788
原创 分治算法实践2-二叉树的后序遍历 C++
题目描述给你一个二叉树,按照后序遍历的顺序输出这棵树。输入数据第一行一个整数 n (1≤n≤1e4) ,表示这棵树的节点数。 接下来有 n-1 行,每行有两个整数 u,v 表示节点 u 到节点 v 有一条边,输入保证树以 1 为根,且 u 为 v 的父节点。对于一个节点的多个子节点,将更早输入的那一个子节点的视为他的左子节点。输出数据输出该树的后序遍历,节点编号之间用一个空格分隔。样例输入61 22 33 41 55 6样例输出4 3 2 6 5 1样例说明后序遍
2021-12-17 15:53:31 1431
原创 分治算法实践1-集合划分 c++
题目描述n个元素的集合{1,2,…, n }可以划分为若干个非空子集。给定正整数n,计算出n 个元素的集合{1,2,…, n }可以划分为多少个不同的非空子集。例如,当n=4 时,集合{1,2,3,4}可以划分为15 个不同的非空子集如下:{{1},{2},{3},{4}}{{1,2},{3},{4}}{{1,3},{2},{4}}{{1,4},{2},{3}}{{2,3},{1},{4}}{{2,4},{1},{3}}{{3,4},{1},{2}}{{1,2},{3,
2021-12-16 21:44:09 2810
原创 PTA 天梯赛 L1-030 一帮一 (15 分) c++ 另辟蹊径-pair的使用 AC代码
原题链接 L1-030前言这道题基本就是从前向后遍历,找到符合的配对。解题的两个关键在于:如何保存学生信息性别的匹配问题解题思路 1记录学生信息:pair<int, string> stu[n];性别的区分用两个指针 p0 和 p1 分别指向最后一个性别是女/男的学生若当前待配对的学生性别为1 则找p0指向的学生配对解题思路 2用同1的方法记录信息性别的区分循环时,判断两者性别值是否相等且当前学生是否已配对已配对的学生的性别值置
2021-12-12 16:41:51 728
原创 《算法设计与分析》(一)枚举:基本思想+问题优化+应用实例
1 枚举算法基本思想枚举算法,也称之为穷举算法,就是按照问题本身的性质,一 一列举出该问题所有可能的解,并在列举的过程中,逐一检验每个可能解是否是问题的真正解。若是则采纳这个解;否则抛弃它。注意:不能遗漏,否则可能导致结果不正确不能重复,否则可能导致效率降低枚举的优点枚举算法的解准确和全面实现简单,通过循环/递归实现执行效率提升空间往往比较大枚举的基本步骤确定枚举对象:枚举对象也可以理解为文体街的表达形式,一般需要若干参数 (p1,p2,…,pk)来描述。逐一列举可能解:
2021-12-12 09:46:14 2654
原创 枚举算法实践4-思维之花 简单背包 c++
题目描述李老师正准备暑假旅行,他有一个容量为L的行李箱和n个物品(n不超过20),每个物品都有自己的体积,物品可以放入行李箱,但行李箱中物品的总体积不能超过行李箱容量,李老师现在想知道他有多少种携带物品的方案(一个物品都不带也算一种方案)输入数据第一行为两个正整数n和L,分别代表物品总数和行李箱容量,n<=20,L<=1e9接下来一行为n个正整数vi,代表第i个物品的体积,vi<=1e8输出数据方案数样例输入3 102 4 5样例输出7解题思路1 - 二叉树
2021-12-11 17:53:17 921
原创 枚举算法实践2-切割木棍 c++
题目描述我们有n根的木棍。现在从这些木棍中切割出来m条长度相同的木棍,问这m根木棍最长有多长?输入数据第一行输入两个数字,n和mn(1<=n<=1000)为木棍数目m(1<=m<=1000)为需要切割出的相同长度的木棍数目随后n个正整数,表示原始木棍的长度(<=10000)输出数据每组输出一行结果,表示切割后绳子的最长长度(保留两位小数)样例输入4 55 6 7 8样例输出4.00初始思路因为要求切割的最大长度,本来想着从木棍长度中找到最
2021-12-11 16:07:43 1864
原创 枚举算法实践3-Lucky number c++
题目描述李老师的lucky number 是3,5和7,他爱屋及乌,还把所有质因数只有3,5,7的数字认定为lucky number,比如9, 15, 21, 25等等。请聪明的你帮忙算一算小于等于x的lucky number有多少个?输入数据一个正整数x,3=<x<=1000000000000输出数据小于等于x的lucky number的个数样例输入49样例输出11解题思路维护一个vector的容器 lucky_numslucky_nums 里存的是从小到大遍历到
2021-12-11 15:10:38 740
原创 枚举算法实践1-立方质数 c++
题目描述给出定义,立方质数:若一个质数能被表示为三个不同的质数的和的形式,则称它为立方质数。现在给你一个数n,判断它是不是立方质数。输入数据正整数n,n<=1000输出数据Yes或者No样例输入19样例输出Yes注意立方质数自己本身也是个质数。加和的三个质数互不相同代码#include <iostream>#include <cmath>using namespace std;int isPrime(int n); //判断素数
2021-12-05 16:24:04 481
原创 PAT (Basic Level) 1032 挖掘机技术哪家强 (20 分) c++ 完美避开测试点 另辟蹊径
原题链接前言看了csdn其他博文,基本上是两个思路:1.结构体记录;2.使用数组,构造hash映射。问题是测试点二:只用一家学校,且成绩为0。这里使用map,利用map中的键值对进行操作,直接AC。代码#include <iostream>#include <map>using namespace std;int main(){ int N; cin >> N; int no, sc; //临时记录 学校number和成绩sco
2021-12-05 15:34:46 399
原创 PAT Basic 1018锤子剪刀布20分 c++ AC代码
原题链接最近在学c++自己敲的,实现的有些麻烦,尤其是输出“获胜次数最多的手势”部分,等后续回来再改进。对代码有疑问的,欢迎交流评论。#include <iostream> //20/20using namespace std;int as = 0, ap = 0, af = 0;int b1 = 0, c1 = 0, j1 = 0;int b2 = 0, c2 = 0, j2 = 0;int check(char a, char b){ if (a == b)
2021-11-27 20:40:42 416
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人