
2020暑假题目ACM
hiyunie
北京工业大学;18级;信息管理与信息系统专业在读
展开
-
堆排序
前期必备知识完全二叉树堆的特征是一棵完全二叉树根节点>孩子节点代码实现(C++)#include <bits/stdc++.h>using namespace std;const int VERTICES = 1e5 + 10;int a[VERTICES];//格式化输出数组的元素void println(int a[], int n) { for (int i = 0; i < n; i++) { if (i == 0)原创 2020-08-08 10:54:30 · 107 阅读 · 0 评论 -
希尔排序
什么是希尔排序希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。插入排序void insertSort(int a[], int原创 2020-08-08 09:07:35 · 162 阅读 · 0 评论 -
算法提高 身份证排序
描述安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位输入第一行一个整数n,表示有n个身份证号码 余下的n行,每行一个身份证号码。输入样例:5466272307503271156215856472207097978234804580401078365404475727700034980710351408803093165输出按出生日期从大到小排序后的身份证原创 2020-08-07 16:49:02 · 272 阅读 · 0 评论 -
1775: 【递归】二分查找
题目描述上机练习6.3.7 用递归算法实现二分查找,即:有n个已经从小到大排序好的数据(不重复),从键盘输入一个数X,用对半查找方法,判断它是否在这n个数中。输入第一行,正整数n,N<=105;第二行,n个整数(int范围内,不重复),中间用空格分隔;第三行,整数X。输出如果找到X,输出其位置;否则输出-1。样例输入1010 20 30 40 50 60 70 80 90 10090样例输出9来源基本算法-递归C++#include <bits原创 2020-08-05 16:09:41 · 1516 阅读 · 0 评论 -
1719: 奖学金
题目描述某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面,这样,每个学生的排序是唯一确定的。任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答原创 2020-08-01 11:24:06 · 545 阅读 · 0 评论 -
1126: 走迷宫
题目描述给一张个迷宫,问能否从起点走到终点,只能往上下左右走,不能斜着走输入多组测试数据,每组第一行两个正整数,分别为n和m表示n这个迷宫有n行m列(0<n,m<10)接着是n行m列,'#'表示路‘*’表示墙‘S’表示起点‘T’表示终点输出每组测试数据输出一个结果,如果能从S走到T,输出“YES”,否则输出“NO”样例输入2 2S*#T3 3S*##*T##*样例输出YESNOPythondef check(x, y): return原创 2020-07-31 15:40:27 · 268 阅读 · 0 评论 -
链表合并
描述现在有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。输入单组测试数据。输入共三行。第一行:输入两个正整数n和m(0< n ,m <= 100),表示链表a有n条记录,链表b有m条记录。第二行:输入a链表的n条记录,每条记录格式为id:score,分别代表学生学号和成绩,每条记录用-->隔开。第三行:输入b链表的m条记录。格式和a链表的一样。输出输出共一行,输出两个链表合并后并按学生id升序排列的链表。格式和输入的链表格式一样。原创 2020-07-30 17:22:26 · 248 阅读 · 0 评论 -
1318: ISBN号码
题目描述每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。识别码的计算方法如下:首位数字乘以1加上次位数字乘原创 2020-07-30 10:35:27 · 694 阅读 · 0 评论 -
成绩排名
描述已有a、b两个链表,每个链表中的结点包括学好、成绩。要求把两个链表合并,按学号升序排列。输入第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成输出按照学号升序排列的数据输入样例 12 35 1006 893 824 952 10输出样例 12 103 824 955 1006 89Pythonimport operatorclass Student: def __init原创 2020-07-29 09:13:27 · 181 阅读 · 0 评论 -
1234: 二叉树的遍历
题目描述给出一个n个节点的二叉树,请求出二叉树的前序遍历,中序遍历和后序遍历。输入 第一位一个整数n(0<n<=26),表示二叉树有n个节点,以下n行,每行第一个为一个大写字母表示节点,后面为两整数,第一个表示左儿子序号,第二个表示右儿子序号,如果该序号为0表示没有输出 共三行,第一行为二叉树的前序遍历,第二行为中序遍历,第三行为后序遍历样例输入7F 2 3C 4 5E 0 6A 0 0D 7 0G 0 0B 0 0样例输出FCADBEGACBDFE原创 2020-07-27 11:04:22 · 1792 阅读 · 0 评论 -
1132: 算法4-1,4-3:定位子串
题目描述将子串在母串中第一次出现的位置找出来。输入若干对字符串,每对字符串占一行并用一个空格分开。前一个字符串为母串,后者为子串。字符串只包含英文字母的大小写。每个字符串不超过98个字符。输出输出子串在母串中首次出现的位置,如果母串中不包含子串则输出0。每个整数占一行。样例输入ACMCLUB ACMDataStructure datadomybest my样例输出103提示可以使用C语言中的字符数组来表示SString结构,不过需要注意的是数据从下标1的单元开始存储。由于C语言原创 2020-07-26 16:29:34 · 681 阅读 · 0 评论 -
1192: 货币系统
题目描述给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。样例:设n=3,m=10,要求输入和输出的格式如下:输入第一行两个整数n,m(m<=5000)以下n行,每行一个整数,第i+1行为第i种货币的面值输出一个整数,为方案数样例输入3 10125样例输出10来源动态规划-背包问题Pythonn, m = map(int, input().split())arr = [0]ans = [0 for _ in range(5001)]ans[0]原创 2020-07-25 14:41:58 · 354 阅读 · 0 评论 -
1709: 简小胡的背包
题目描述给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个输入输入的第一行包含两个整数n, m,分别表示物品的个数和背包能装重量。以后n行每行两个数Wi和Vi,表示物品的重量和价值输出输出1行,包含一个整数,表示最大价值。样例输入3 52 33 54 7样例输出8数据规模和约定1<=N<=200M<=5000.来源jwxC++#include <iostream>原创 2020-07-25 11:11:30 · 211 阅读 · 0 评论 -
1398: TCMPC进阶之路
题目描述小w是云南中医学院计算机专业的一名学生,最近决心开始好好学习(当然是因为太菜被女神嫌弃了…)作为一个超级菜的菜鸟,进步的最好方式就是奋发图强努力刷题!于是小w开始在ZCMUOJ中做题。ZCMUOJ新开了一个叫<C语言练习>的专题,引进了一个新模式——积分系统,积分越多,账号称号就越高级:[0-50]:菜鸟(50-500]:入门(500-2000]:黑铁级入门选手(2000-8000]:青铜级入门选手(8000-20000]:白银级入门选手(20000-80000]:黄金级原创 2020-07-24 14:11:28 · 179 阅读 · 0 评论 -
1299: Problem 1
题目描述编写一个类GCD,该类的功能是实现两个数的最大公约数,类需要有构造函数,请在main函数内通过创建类的对象来实现该功能。输入输入多组数据,每组数据包含两个整数输出输出两个数的最大公约数样例输入100 5020 30样例输出5010C++#include <bits/stdc++.h>using namespace std;int gcd(int a,int b) { return b==0?a:gcd(b,a%b);}int main() {原创 2020-07-24 10:40:24 · 136 阅读 · 0 评论 -
1177: C语言基础练习
题目描述设有若干个人员的数据,其中包含学生和教师。学生的数据中包括:号码、姓名、性别、职业、班级。教师的数据包括:号码、姓名、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现在要求把这些数据放在同一个表格中储存,使用结构体中的共用体实现。结构体定义如下:struct {int num;char name[10];char sex;char job;union {int class;char position[10];}category;};在以上的结构体中,如果job项原创 2020-07-23 15:35:08 · 203 阅读 · 0 评论 -
1241: 找亲戚
题目描述或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。如果能得到完整的家谱,判断两个人是否亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及。在这种情况下,最好的帮手就是计算机。为了将问题简化,你将得到一些亲戚关系的信息,如Marry和Tom是亲戚,Tom和Ben是亲戚,等等。从这些信息中,你可以推出Marry和Ben是亲戚。请写一个程序,对于我们的关于亲戚关系的提问,以最快的速度给出答案。输入输原创 2020-07-23 10:30:49 · 1305 阅读 · 0 评论 -
1224: 【搜索基础】工作分配问题
时间限制: 1 Sec 内存限制: 128 MB提交: 26 解决: 14[提交][状态][讨论版]题目描述工作分配问题 job.pas【问题描述】设有n件工作分配给n个人,将工作i分配给第j个人费用为Cij,为每个人分配一件不同的工作,对于给定的工作费用,计算最佳工作分配方案,使得中费用达到最小。【输入格式】第一行有1个正整数(1<=n<=20).接下来的n行,每行n个数,第i行表示第i个人从事各项工作的费用【输出格式】共一行,即最小总费用【输入样例】34 2 52原创 2020-07-21 16:08:24 · 810 阅读 · 0 评论 -
1221: 【搜索基础】N皇后问题
1221: 【搜索基础】N皇后问题时间限制: 1 Sec 内存限制: 128 MB提交: 84 解决: 35[提交][状态][讨论版]题目描述N皇后问题 queen.pas/c/cpp在N*N(1<N<=9)的棋盘上放置N个皇后而彼此不受攻击(即在棋盘的任一行,任一列和任一对角线上不能放置2个皇后),编程求解所有的摆放方法。[输入格式]一个整数n(1<n<=9)[输出格式]若有解,输出若干行,每行n个数,依次表示第i个皇后的列号若无解,输出 “no”[原创 2020-07-21 10:52:56 · 272 阅读 · 1 评论 -
打印n个数中任意m个数的全排列
CODEn, c = map(int, input().split())a = [0 for i in range(15)]vis = a[:]def println(): for i in range(1, c + 1): if i == 1: print(a[i], end='') else: print('', a[i], end='') print()def dfs(cnt):原创 2020-07-21 09:25:37 · 429 阅读 · 0 评论 -
趣味求和
描述编写一个程序,求Sn=a+aa+aaa+……+aa…aaa(有n个a)的值,其中a是一个数字。输入输入数据含有不多于50组的数据,每组数据由两个正整数(0<a, n<10)组成。输出对于每组数据a和n,计算Sn=a+aa+aaa+……+aa…aaa(有n个a)的值,每个计算结果应单独一行。输入样例 15 2输出样例 160提示use long long for 64-bit integerPythonwhile True: try: n, a原创 2020-07-18 17:28:46 · 217 阅读 · 0 评论 -
二进制数问题
描述若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。例如:(13)10=(1101)2 其中1的个数为3,0的个数为1,则称此数为A类数;(10)10=(1010)2 其中1的个数为2,0的个数也为2,称此数为B类数;(24)10=(11000)2 其中1的个数为2,0的个数为3,则称此数为B类数;程序要求:求出1~1000之中(包括1与1000),全部A、B两类数的个数。输入无输入。原创 2020-07-18 17:18:41 · 1511 阅读 · 0 评论 -
子集和问题
【问题描述】对于一个给定正整数的集合s={x1,x2,x3…xn}和正整数c,编程计算s的一个子集s1,使得子集s1的和等于c。【输入格式】第一行有2个正整数n和c第二行有n个正整数【输出格式】一行数据,按输入的顺序输出,若无解则输出"No Solution!"【输入样例】5 102 2 6 5 4【输出样例】2 2 6【问题规模】n<7000,c<maxlongintC++#include <bits/stdc++.h>using namespac原创 2020-07-18 17:09:59 · 675 阅读 · 0 评论 -
选数
链接:https://ac.nowcoder.com/acm/problem/16706来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 131072K,其他语言262144K64bit IO Format: %lld题目描述已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:3+7+12=22 3+原创 2020-07-18 14:01:56 · 160 阅读 · 0 评论 -
【搜索基础】全排列问题
题目描述输出自然数1~n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复数字。[输入格式]1<=n<=9[输出格式]由1~n组成的所有不重复的数字序列。每行一个序列[输入样例]3[输出样例]1 2 31 3 22 1 32 3 13 1 23 2 1来源搜索专题写在前面很多问题不要想得太难,可以试着自己先动手一点一点解决,并且好好地坚持。AC_codeC++版#include <bits/stdc++.h>usin原创 2020-07-18 09:48:44 · 1859 阅读 · 0 评论 -
松哥的困惑
描述都到世界末日了,松哥都没找到女朋友,因此松哥感到很困惑.没想到到了世界末日都没人喜欢我.松哥一生气就发布了征友启事,第二天,一共有n个人报名应征松哥女友.松哥对女友的要求有三点,第一点,名字必须有三个字,第二点,名字中要带Li,第三点名字中要带Ting.松哥希望你能从n个人中.松哥决定选取一人并和她约会.你能找到是谁嘛?输入多组测试数据.每组测试数据的第一行是一个正整数(n<=100).接下来n行分别有n个名字.每个名字不超过20个字符.名字的格式为:名+姓,且首字母大写,比如沈利松就原创 2020-07-17 16:44:16 · 233 阅读 · 0 评论