自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

热爱生活

你一定要成为你想成为的人

  • 博客(360)
  • 资源 (90)
  • 收藏
  • 关注

原创 Python烟花秀

Python跨年烟花代码。

2023-01-22 07:29:43 11679 31

原创 《蓝桥杯》30天拿下Python算法设计与分析【Day 13】

本文介绍动态规划的一类典型题型:背包问题,具体分为0-1背包和完全背包两种。

2023-02-01 08:12:57 30 1

原创 【浪漫情人节】送你Python表白神器,祝天下有情人终成眷属

哈哈哈再过十几天就到了一年一度的情人节啦!如此浪漫的日子,小王决定用Python写一个简单的表白神器送给大家,祝天下有情人终成眷属!

2023-01-31 13:18:11 474 20

原创 Bone Collector(Python)

Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”.This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …The bone collector had a big bag with a volume of V ,and along his trip of co

2023-01-31 08:19:48 351 1

原创 实验8-动态规划与背包问题

1.专题训练(6)1005 湫湫系列故事——减肥记Ⅰ2.专题训练(6)1001 Bone Collector3.0-1背包问题4.专题训练(5)1002 最少拦截系统

2023-01-30 14:55:23 675 1

原创 动态规划的万能公式(三类题型)

本文主要介绍如何用Python解决动态规划的问题,在动态规划问题中,最主要的是找到问题的dp,即找到状态转移函数,当你找到了该问题的状态转移函数,你就成功了一半,下面我将介绍三类最主要的题型,对于这三类题型,分别有着不同的解题公式。

2023-01-30 08:04:10 239

原创 Pygame的Surface&Image&Time

Surface用来生成一个矩形,Image用来导入外部图片,Time用来暂停时间。

2023-01-29 16:33:57 468 2

原创 0-1背包问题(Python)

给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

2023-01-29 14:35:48 179

原创 《蓝桥杯》30天拿下Python算法设计与分析【Day 12】

动态规划问题主要运用了一种动态变化的思想,可以用两个一维列表,也可以直接用一个二维列表来实现,具体问题具体分析,下面我们将通过两个问题来引入动态规划。

2023-01-29 08:01:59 674 2

原创 背包问题(Python)

假设周末学校要组织跳蚤市场,某学生准备了电子词典、篮球、网球拍和考研书4件物品进行交易,要用自己的书包把这些物品带到学校。各个物品的质量w和价值v如表所示,该学生书包的最大承重量C=8。我们要解决的问题是帮助该同学找到最合理的搭配方案,使他能用书包带到学校的物品价值最大。

2023-01-28 13:17:26 449 3

原创 爬楼梯(Python)

假设小明住在二楼,每次回家都需要经过一个有n层台阶的楼梯。小明每次可以选择一步走一级台阶或者一步走两级台阶。请计算一下小明从楼下到家一共有多少种走法?

2023-01-28 08:09:35 706 5

原创 矿工挖矿(Python)

假设某地区有5座钻石矿,每座钻石矿的钻石储量不同,根据挖矿难度,需要参与挖掘的工人数量也不同。假设能够参与挖矿工人的总数是10人,且每座钻石矿要么全挖,要么不挖,不能只派出一部分人挖取一部分矿产。要求用程序求解出,要想得到尽可能多的钻石,应该选择挖取哪几座矿产?

2023-01-27 15:06:32 2250 18

原创 Pygame创建界面

本文简单学习了一下如何使用pygame创建一个界面,未来我们将学习如何在pygame中创建画中画。

2023-01-27 11:43:01 709 1

原创 Python内置包Tkinter的重要控件(下)

包括但不限于:① Label(标签)② Button (按钮)③ Entry(输入框)④ Text(文本框)⑤ Menu(菜单栏)⑥ Messagebox(提示框)⑦ Canvas(画布)⑧ Listbox(选项框)⑨ Checkbutton(复选框)⑩ Radiobutton(单选框)本文主要介绍后五个,即Canvas,Messagebox,Listbox,Checkbutton,Radiobutton。

2023-01-26 19:05:06 551

原创 Python内置包Tkinter的重要控件(上)

包括但不限于:① Label(标签)② Button (按钮)③ Entry(输入框)④ Text(文本框)⑤ Menu(菜单栏)⑥ Messagebox(提示框)⑦ Canvas(画布)⑧ Listbox(选项框)⑨ Checkbutton(复选框)⑩ Radiobutton(单选框)本文主要介绍前五个,即Label,Button,Entry,Text ,Menu

2023-01-26 13:17:12 1488 5

原创 Tkinter的Radiobutton控件

Tkinter的Radiobutton是一个含有多个选项的控件,但是只能选择其中的一个选项。

2023-01-25 16:22:50 624 2

原创 Tkinter的Checkbutton控件

Tkinter的Checkbutton是一个有着许多选项的控件,可以一次选择几个选项。

2023-01-25 08:03:33 957 3

原创 Tkinter的Listbox控件

Tkinter的Listbox控件是个选项框,主要是用来在给定的选项中选择一个。

2023-01-24 16:31:01 677 3

原创 Tkinter的Canvas控件

Canvas控件是Tkinter界面设计的一个画图工具,也可以用它导入外部图案到界面中。

2023-01-24 08:33:11 1323 2

原创 Tkinter的Menu与Messagebox

Tkinter的菜单控件Menu以及对话框控件Messagebox。

2023-01-23 16:21:51 1404 2

原创 Tkinter的Entry与Text

Tkinter界面设计之输入控件Entry以及文本框控件Text。

2023-01-23 08:00:26 689 2

原创 温室大棚(Python)

在一个温室大棚中种有西红柿。该温室大棚使用种植架来种植西红柿,并使用人造光来照射西红柿。在种植架上的西红柿果实以二叉树的结构排列,二叉树的结点代表西红柿,二叉树的链接代表茎。不幸的是,温室大棚两侧的照射灯只有右侧的工作,而左侧的灯因某些原因无法使用。种植人员在准备收获西红柿时才发现这些问题。检查后发现,因为光的接受度不够,只有每一层种植架上最右侧的西红柿正常成熟,可以食用。现给出种植架上西红柿的二叉树结构,求如果在上述情况下,有多少西红柿是成熟的。

2023-01-22 16:25:15 1107 2

原创 混乱地铁(Python)

在某个城市中地铁网极度混乱。一条地铁线路上有n个地铁站,分别编号为1到n。地铁线路上的每一个站都会停靠地铁,每一个地铁站上都有一个数字m,代表从此站出发乘客必须乘坐的站数。每个地铁站都有通往两个方向的地铁。因此可以向编号大的方向前进m站,也可以向编号小的方向前进m站。但如果前进后超出了地铁站的范围,则该地铁不可被乘坐。例如编号为1的地铁上的数字为3,那么在该地铁站上车,可以向正方向坐到4号地铁站。但不能反方向坐车到-2号地铁站,因为-2号地铁站不存在。现在乘客从A号地铁站出发,想要到达B号地铁站,求他能否到

2023-01-21 15:28:49 1082 2

原创 Tkinter的Label与Button

Tkinter的标签控件Label以及按钮控件Button。

2023-01-21 08:07:28 839 3

原创 艰难旅行(Python)

现已知一个大小为N*M的地图,地图中只有可能出现两个数字:0或1,现规定如果位于数字为0的格子上,则下一步只能往相邻四个格子中数字为1的格子走,如果位于数字为1的格子上,则下一步只能往相邻四个格子中数字为0的格子走。如果给定起点格子,则可以向上下左右四个方向移动,且同一个格子不能重复走,求能在地图中到达多少格子?

2023-01-20 16:21:46 719 1

原创 员工派对(Python)

公司要举办一个员工派对,公司里所有的员工都有资格来参加。该公司的组织结构是一个二叉树结构。如果一个结点A有双亲结点B,则代表B是A的上司。实际上,每一个员工为派对带来的贡献不一样,有的人幽默,就能使派对更加有趣,而有的人恰恰相反。然而,假如该公司里的所有员工都对自己的上司不满意(假设其有上司),那么如果一个员工来到派对,其上司就不能来到派对,反之亦然。但员工和员工上司的上司可以一起参加派对,因为他们互相不熟悉。如果你是董事长的秘书,并且已知公司组织结构,应该怎么邀请员工,使得任何一组员工和上司不会同时出现在

2023-01-20 07:38:22 518

原创 最大油田(Python)

政府现勘探到一片油田,在这一片油田中有很多散落的石油资源。因为经费原因,政府只能开采一处油田,所以需要找到最大的油田进行施工。油田的地理情况被简化成了一个矩阵,其中每一个方格代表一块土地,0代表陆地,1代表是石油资源。如果一处石油资源和另一处石油资源相连接,则其算一块油田。现要找到最大的相互连接的石油资源,并输出它的面积

2023-01-19 17:30:23 1420 1

原创 《蓝桥杯》30天拿下Python算法设计与分析【Day 11】

深度优先算法是图中的一个主要算法,简称DFS算法。

2023-01-19 09:09:41 1474 1

原创 【新年快乐】禁止燃放烟花爆竹&那就用Python画场烟花秀吧

新年即将来临,在这个举国欢庆的日子里,怎么能少的了灿烂又热烈的烟花秀呢!既然不让我们在线下燃放烟花爆竹,那就让我们一起来画一场烟花秀,送给你最在意的那个人叭~

2023-01-18 16:54:49 817 15

原创 用Python的内置包Tkinter写一个练习系统6.0

练习系统6.0

2023-01-18 14:52:16 697

原创 全排列(Python)

【问题描述】有4个互不相同的数字,输出由其中三个不重复数字组成的排列。【输入形式】4个整数,已经从小到大排列。【输出形式】输出所有排列,输出格式见样例【样例输入】1 2 3 4【样例输出】1 2 31 3 22 1 32 3 13 1 23 2 11 2 41 4 22 1 42 4 14 1 24 2 11 3 41 4 33 1 43 4 14 1 34 3 12 3 42 4 33 2 43 4

2023-01-18 07:11:42 349

原创 子集和(Python)

子集和问题的一个实例为〈S,c〉。其中,S={ x1 , x2 ,…,xn }是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得:试设计一个解子集和问题的回溯法

2023-01-17 19:00:20 561 1

原创 用Python的内置包Tkinter写一个练习系统5.0

练习系统5.0

2023-01-17 07:34:53 398

原创 数独(Python)

【问题描述】已知一个未填满的数独,编写程序将其填满,输出所有合法的结果。【输入形式】一个未填满的数独【输出形式】所有合法并填满的数独【样例输入】board=[[5,3,0,0,7,0,0,0,0], [6,0,0,1,9,5,0,0,0], [0,9,8,0,0,0,0,6,0], [8,0,0,0,6,0,0,0,3], [4,0,0,8,0,3,0,0,1], [7,0,0,0,2,0,0,0,6],

2023-01-16 15:40:48 718

原创 用Python的内置包Tkinter写一个练习系统4.0

练习系统4.0

2023-01-16 08:28:28 3264

原创 走迷宫(Python)

【问题描述】有一个mn格的迷宫(表示有m行、n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,输入这mn个数据和起始点、结束点(起始点和结束点都是用两个数据来描述的,分别表示这个点的行号和列号)。现在要你编程找出所有可行的道路,要求所走的路中没有重复的点,走时只能是上下左右四个方向。如果一条路都不可行,则输出相应信息(用-1表示无路)。【输入形式】第一行是两个数m,n(1< m, n< 15),接下来是m行n列由1和0组成的数据,最后两行是起始点和结束点。

2023-01-15 16:18:55 242 1

原创 用Python的内置包Tkinter写一个练习系统3.0

练习系统3.0

2023-01-15 08:39:20 352

原创 N皇后(Python)

比如当N=6时,检查一个如下的6 x 6的棋盘,有六个皇后被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个皇后。#cols[rowIndex]表示在第(rowIndex+1)行的列坐标,例如cols[rowIndex]=2,这其实表示的是第(rowIndex+1)行第2列的元素。#我们会循环遍历下一个位置,也就是i=1,来到了第二列,checkBoard返回还是False,说明还是不合法,继续循环。

2023-01-14 16:19:27 237

原创 用Python的内置包Tkinter写一个练习系统2.0

练习系统2.0

2023-01-14 10:26:24 711

原创 回溯法作业(Python版)

比如当N=6时,检查一个如下的6 x 6的棋盘,有六个皇后被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个皇后。输入数据的第1 行有2 个正整数n 和c(n≤10000,c≤10000000),n 表示S 的大小,c是子集和的目标值。第一行是两个数m,n(1< m, n< 15),接下来是m行n列由1和0组成的数据,最后两行是起始点和结束点。n格的迷宫(表示有m行、n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,输入这m。

2023-01-13 16:46:14 124

Python动态爱心代码

基于Python实现动态漂浮爱心的源码 class Heart(): #每个爱心(爱心类) def __init__(self): self.r = ra.randint(10,15) #爱心的半径 self.x = ra.randint(-1000,1000) #爱心的横坐标 self.y = ra.randint(-500,500) #爱心的纵坐标 self.f = ra.uniform(-3.14,3.14) #爱心左右移动呈正弦函数 self.speed = ra.randint(5,10) #爱心移动速度 self.color = ra.choice(colors) #爱心的颜色 self.outline = 1 #爱心的外框大小(可不要)

2023-02-01

Python情人节表白神器

哈哈哈再过十几天就到了一年一度的情人节啦!如此浪漫的日子,小王决定用Python写一个简单的表白神器送给大家,祝天下有情人终成眷属! 包含漂浮爱心源码以及表白界面的源码。 爱心类:         def __init__(self):             self.r = ra.randint(10,15)             self.x = ra.randint(-1000,1000)             self.y = ra.randint(-500,500)             self.f = ra.uniform(-3.14,3.14)             self.speed = ra.randint(5,10)             self.color = ra.choice(colors)             self.outline = 1 ……

2023-01-30

Python跨年烟花代码

新年即将来临,在这个举国欢庆的日子里,怎么能少的了灿烂又热烈的烟花秀呢!既然不让我们在线下燃放烟花爆竹,那就让我们一起来画一场烟花秀,送给你最在意的那个人叭~

2023-01-19

初识Tkinter,教你用Python设计一个简单的登录系统(源代码)

import tkinter as tk import tkinter.messagebox import pickle root=tk.Tk() root.title('登录账户') screenheight=root.winfo_screenheight() screenwidth=root.winfo_screenwidth() height=300 width=500 x=(screenwidth-width)//2 y=(screenheight-height)//2 root.geometry('%dx%d+%d+%d'%(width,height,x,y)) tk.Label(root,text='欢迎光临登录系统',font=('宋体',20),bg='white',fg='blue',width=20,height=2).pack() tk.Label(root,text='账户',font=('宋体',12)).place(x=140,y=80) tk.Label(root,text='密码',font=('宋体',12)).place(x=140,y=120)

2023-01-07

【数据结构与算法】排序-堆排序.c

排序-堆排序 【问题描述】 设若干组待排序序列,进行从小到大排序。采用堆排序方法。输出每次堆排的中间结果。 【输入形式】 输入若干组数据,每组数据包括: (1)待排序序列长度n; (2)待排序序列(整型序列)。 【输出形式】 输出每次堆排的结果。 【样例输入】 9 5 14 17 9 12 8 19 11 16 5 2 6 4 1 3 【样例输出】 heapSort: 19 16 17 14 12 8 5 11 9 17 16 9 14 12 8 5 11 19 16 14 9 11 12 8 5 17 19 14 12 9 11 5 8 16 17 19 12 11 9 8 5 14 16 17 19 11 8 9 5 12 14 16 17 19 9 8 5 11 12 14 16 17 19 8 5 9 11 12 14 16 17 19 5 8 9 11 12 14 16 17 19 heapSort: 6 3 4 1 2 4 3 2 1 6 3 1 2 4 6 2 1 3 4 6 1 2 3 4 6 【样例说明】

2023-01-07

【数据结构与算法】简单排序(排序过程).c

简单排序(排序过程) 【问题描述】 实现冒泡排序、简单选择排序、直接插入排序。 【输入形式】 输入3组待排序序列。 【输出形式】 输出分别使用冒泡、选择、插入排序的每趟排序结果。 【样例输入】 5 7 3 5 0 -9 3 9 8 0 6 2 4 6 3 4 2 【样例输出】 insertSort: 3 7 5 0 -9 3 5 7 0 -9 0 3 5 7 -9 -9 0 3 5 7 selectSort: 0 8 9 0 8 9 bubbleSort: 2 4 3 4 2 6 2 3 4 2 4 6 2 3 2 4 4 6 2 2 3 4 4 6 【样例说明】 从样例可以看出,直接插入排序和选择排序排序趟数都是n-1,而冒泡排序是改进后的排序算法,排序趟数<=n-1。 每趟排序完成,调用printList输出当前结果。 注意:选择排序,每趟选择只做一次交换(而不是每次比较都做交换) 【评分标准】

2023-01-07

【数据结构与算法】快速排序.cpp

快速排序 【问题描述】 实现快速排序。 【输入形式】 输入待排序序列。 第一行为待排序数据个数n, 第二行为待排序的n个数据; 【输出形式】 输出快速排序过程中每趟排序的枢纽值及对应数据情况。 【样例输入】 8 46 31 12 46 87 37 98 75 【样例输出】 pivotkey=46: 37 31 12 46 46 87 98 75 pivotkey=37: 12 31 37 46 46 87 98 75 pivotkey=12: 12 31 37 46 46 87 98 75 pivotkey=87: 12 31 37 46 46 75 87 98 【评分标准】 注意:指定处填充函数,完成快速排序算法。

2023-01-07

【数据结构与算法】交换类排序.c

交换类排序 【问题描述】 实现冒泡排序、快速排序。 【输入形式】 输入2组待排序序列。 第一行为待冒泡排序数据个数n, 第二行为待冒泡排序的n个数据; 第三行为待快速排序数据个数m, 第四行为待快速排序的m个数据。 【输出形式】 输出分别使用冒泡排序、快速排序的排序结果。 【样例输入】 5 7 3 5 0 -9 6 2 4 6 3 4 2 【样例输出】 bubbleSort: -9 0 3 5 7 quickSort: 2 2 3 4 4 6 【样例说明】 【评分标准】 注意:请使用题目指定方法排序,其他方法实现的排序不得分。

2023-01-07

【数据结构与算法】插入类排序.c

插入类排序 【问题描述】 实现直接插入排序、希尔排序。 【输入形式】 输入2组待排序序列。 【输出形式】 输出分别使用插入排序、希尔排序的排序结果。 【样例输入】 5 7 3 5 0 -9 6 2 4 6 3 4 2 【样例输出】 insertSort: -9 0 3 5 7 shellSort: 2 2 3 4 4 6 【样例说明】 【评分标准】

2023-01-07

【数据结构与算法】查找-折半查找.c

查找-折半查找 【问题描述】 设有一整型查找表,利用二分查找法查找指定的关键字。 假设给出的查找表不确定是否排序,要求查找前,对查找表进行排序。 【输入形式】 输入若干组数据,每组数据包括: (1)输入整数n,表示查找表长度为n(n小于1000); (2)输入n个整数; (3)输入查找关键字key。 【输出形式】 若找到,输出关键字的位置序号(排序后的位置)及查找次数; 若未找到,输出“no”及查找次数。 【样例输入】 11 5 13 19 21 37 56 64 75 80 88 92 21 11 5 13 19 21 37 56 64 75 80 88 92 85 5 36 12 48 55 84 36 5 63 -9 54 12 100 55 【样例输出】 4 [3] no [3] 2 [3] no [2] 【样例说明】 【评分标准】

2023-01-07

【数据结构与算法】查找-顺序查找.c

查找-顺序查找 【问题描述】 设有一查找整型查找表(长度不超过1000),利用顺序查找算法实现关键字的查找。 【输入形式】 输入若干组数据,每组数据包括 (1)输入整数n,表示查找表长; (2)输入n个整数,表示查找表; (3)输入查找关键字key。 【输出形式】 若找到关键字,输出关键字在表中的位置序号(第一次出现); 若未找到,输出“no” 【样例输入】 5 65 56 42 -30 100 -30 8 65 56 42 -30 100 33 56 98 30 【样例输出】 4 no 【评分标准】

2023-01-07

【数据结构与算法】替换字符串中所有子串.cpp

替换字符串中所有子串 【问题描述】 输入三个字符串,将主串s1中所有与字符串s2相同的子串替换成字符串s3。 【输入形式】 第一行输入主串s1,第二行输入待替换的子串s2,第三行输入替换字串s3。 【输出形式】 输出替换字串后的主创。 【样例输入】 A beautiful sunrise started the day, with black clouds slowly lit by the bright yellow sun. sun moon 【样例输出】 A beautiful moonrise started the day, with black clouds slowly lit by the bright yellow moon. 【评分标准】 填充各个函数,利用已有函数完成子串替换。

2023-01-07

【数据结构与算法】顺序表元素循环左移(new).cpp

顺序表元素循环左移(new) 【问题描述】 顺序表中有N(N>0)个元素,将每个元素循环左移M(M>=0,也可能会大于N)个位置。 即顺序表中数据由(a1a2a3...an)变换为(am+1....ana1a2...am)。 如果可以,控制时间复杂度为:O(n) 【输入形式】 第一行输入N(1<=N<=100)、M(M>=0); 第二行输入N个整数。 【输出形式】 输出顺序表中循环左移M位以后的元素序列(元素之间空格分隔)。 【样例输入1】 8 4 1 2 3 4 5 6 7 8 【样例输出1】 5 6 7 8 1 2 3 4 【样例输入2】 4 6 1 2 3 4 【样例输出2】 3 4 1 2 【样例输入3】 1 0 10 【样例输出3】 10 【评分标准】 填充代码,实现以上程序功能。

2023-01-07

【数据结构与算法】先序输出叶结点.cpp

函数:先序输出叶结点 【问题描述】按照先序遍历的顺序输出给定二叉树的叶结点。 【输入形式】以字符形式输入二叉树的结点序列 输入的字符序列为:ABC##DE#G##F### 【输出形式】输出二叉树中叶子结点的先序序列 【样例输入】 ABC##DE#G##F### 【样例输出】 CGF 【样例说明】 【评分标准】

2023-01-07

【数据结构与算法】图邻接表和拓扑排序.c

图邻接表和拓扑排序 由于采用不同方式实现的拓扑排序,输出序列不惟一,因此对此题进行修订。不再检查拓扑序列是否一致。 【问题描述】 设一有向图(如下所示),求图的邻接表表示,用拓扑序列检测有向图是否存在环。 【输入形式】 输入顶点信息,以#结束; 输入弧的信息,以-1,-1结束。 【输出形式】 输出邻接表形式 输出拓扑排序的顶点数 输出是否存在环 【样例输入1】 ABCDEF# 0,1 1,2 2,3 4,1 4,5 -1,-1 【样例输出1】 A,0:->1 B,2:->2 C,1:->3 D,1: E,0:->5->1 F,1: 6 no ring 【样例输入2】 ABCDEF# 1,0 1,3 2,1 2,5 3,2 3,4 3,5 4,0 5,0 5,1 5,4 -1,-1 【样例输出2】 A,3: B,2:->3->0 C,1:->5->1 D,1:->5->4->2 E,2:->0 F,2:->4->1->0 0 has ring 【样例说明】

2023-01-07

【数据结构与算法】图的最小生成树-Prim算法.c

图的最小生成树-Prim算法 【问题描述】 编写程序,利用带权无向图的邻接矩阵存储,实现图的最小生成树Prim算法。 【输入形式】 输入图的顶点序列及图的边的情况。如样例所示。边的输入以输入-1,-1,-1,作为结束。 0,1,6 表示对应的顶点及边是:A到B的边权值为6. 输入生成树起始顶点。 【输出形式】 输出图的最小生成树 【样例输入1】 ABCDEF# 0,1,6 0,2,1 0,3,5 1,2,5 1,4,3 2,4,6 2,5,4 2,3,5 3,5,2 4,5,6 -1,-1,-1 0 【样例输出1】 (A,C)--1 (C,F)--4 (F,D)--2 (C,B)--5 (B,E)--3 【样例输入2】 ABCDEF# 0,1,6 0,2,1 0,3,5 1,2,5 1,4,3 2,4,6 2,5,4 2,3,5 3,5,2 4,5,6 -1,-1,-1 2 【样例输出2】 (C,A)--1 (C,F)--4 (F,D)--2 (C,B)--5 (B,E

2023-01-07

【数据结构与算法】图的最小生成树-Kruskal算法.c

图的最小生成树-Kruskal算法 【问题描述】 编写程序,利用带权无向图的邻接矩阵存储,实现图的最小生成树Kruskal算法。 【输入形式】 输入图的顶点序列及图的边的情况。如样例所示。边的输入以输入-1,-1,-1作为结束。 0,1,6 表示对应的顶点及边是:A到B的边权值为6. 【输出形式】 输出图的最小生成树 【样例输入1】 ABCDEF# 0,1,6 0,2,1 0,3,5 1,2,5 1,4,3 2,4,6 2,5,4 2,3,5 3,5,2 4,5,6 -1,-1,-1 【样例输出1】 (A,C)--1 (D,F)--2 (B,E)--3 (C,F)--4 (B,C)--5 【样例输入2】 ABCDEFG# 0,1,5 0,2,4 0,3,2 0,4,6 1,6,3 2,4,1 3,5,3 4,5,5 5,6,1 -1,-1,-1 【样例输出2】 (C,E)--1 (F,G)--1 (A,D)--2 (B,G)--3 (D,F)--3 (A,C)--4

2023-01-07

【数据结构与算法】删除指定子串.cpp

删除指定子串 【问题描述】 删除指定子串:删除从指定位置pos开始的长度为len的子串 【输入形式】 第一行输入一个字符串; 第二行输入开始位置pos和子串长度len。 【输出形式】 删除成功则输出删除子串后的字符串,删除不成功则输出error。 【样例输入1】 I am a boy! 2 3 【样例输出1】 I a boy! 【样例输入2】 I am a boy! 20 3 【样例输出1】 error 【评分标准】 只补充操作函数部分,不允许修改其他代码。

2023-01-07

【数据结构与算法】合并零之间非零节点.cpp

合并零之间非零节点 【问题描述】 给你一个链表的头节点 head,该链表包含由 0 分隔开的一连串整数。链表的开端和末尾的节点都满足== 0 。对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0 移除,修改后的链表不应该含有任何 0 。 【输入形式】 输入一个链表,包括若干个整数。两端结点保证是0,不存在任意两个连续的0。(元素之间以空格分隔) 【输出形式】 输出合并非零结点后的链表。(元素之间以空格分隔) 【样例输入】 0 3 1 0 4 5 2 0 e 【样例输出】 4 11 【样例说明】 以输入非法整数作为链表输入结束标志。 【评分标准】 不允许修改程序结构,只完成算法函数。

2023-01-07

【数据结构与算法】图的邻接矩阵与搜索.c

图的邻接矩阵与搜索 【问题描述】 给定一个无向图,创建图的邻接矩阵表示,并对无向图进行深度和广度遍历。 【输入形式】 如上图所示,输入图的顶点序列(以#结束)和图的边(以输入-1,-1作为结束)。 ABCDEFGH# 0,1 0,2 0,5 1,3 1,4 2,5 2,6 3,7 4,7 -1,-1 输入遍历的起始顶点序号,如输入2(表示从顶点C出发遍历)。 【输出形式】 输出图的邻接矩阵表示;(邻接矩阵的每个元素之间以空格分隔) 输出从起始顶点出发的深度和广度遍历序列。 【样例输入】 ABCDEFGH# 0,1 0,2 0,5 1,3 1,4 2,5 2,6 3,7 4,7 -1,-1 2 【样例输出】 graph: 0 1 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1

2023-01-07

【数据结构与算法】图的邻接矩阵创建.c

图的邻接矩阵创建 【问题描述】 给定一个无向图,创建图的邻接矩阵表示。 【输入形式】 如上图所示,输入图的顶点序列(以#结束)和图的边(以输入-1,-1作为结束)。 ABCDEFGH# 0,1 0,2 0,5 1,3 1,4 2,5 2,6 3,7 4,7 -1,-1 【输出形式】 输出图的邻接矩阵表示;(邻接矩阵的每个元素之间以空格分隔) 【样例输入】 ABCDEFGH# 0,1 0,2 0,5 1,3 1,4 2,5 2,6 3,7 4,7 -1,-1 【样例输出】 graph: 0 1 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 【评分标准】

2023-01-07

【数据结构与算法】图的邻接表存储.c

图的邻接表存储 【问题描述】 设一有向图(如下所示),图用邻接表进行存储,输出存储后的邻接表。 【输入形式】 输入顶点信息,以#结束; 输入弧的信息,以-1,-1结束。 【输出形式】 输出邻接表形式。 【样例输入1】 ABCDEF# 0,1 1,2 2,3 4,1 4,5 -1,-1 【样例输出1】 A:->B B:->C C:->D D: E:->F->B F: 【样例输入2】 ABCDEF# 1,0 1,3 2,1 2,5 3,2 3,4 3,5 4,0 5,0 5,1 5,4 -1,-1 【样例输出2】 A: B:->D->A C:->F->B D:->F->E->C E:->A F:->E->B->A 【样例说明】 按头插法建立邻接链表。 【评分标准】

2023-01-07

【数据结构与算法】纸条解密-栈的应用.cpp

纸条解密-栈的应用 【问题描述】 传纸条是一种在课堂上传递信息的老方法,虽然现在手机短信和QQ聊天越来越普及,但是手写的信息会让人感到一种亲切感。对许多学生而言,在学校里传递一些私秘性的信息是一种令人兴奋的打发时光的方式,特别是在一些令人厌烦的课堂上。 XX 和 YY 经常在自习课的时候传纸条来传递一些私密性的信息。但是他们的座位相隔比较远,传纸条要通过其他人才能到达对方。在传递过程中,难免会有一些好奇心比较强的同学偷看纸条的内容。所以他们想到了一个办法,对纸条内容进行加密。 加密规则很简单:多次在信息的任意位置随意的添加两个相同的字母;最后再将信息内容逆置。 由于使用英文交流显得比较高端,所以他们的纸条内容只有英文。 现在给你加密后的密文,请你还原出原文。 【输入形式】 输入数据的第一行为一个正整数 T(T ≤ 30),表示共有 T 组测试数据。 接下来 T 行,每行为一个字符串,字符串仅包含小写英文字母,且保证原始字符串中不包含相邻两个相同的字母,字符串长度不超过2000。 【输出形式】 每组数据输出一行字符串,表示还原后的内容。

2023-01-07

删除链表中的重复元素.cpp

删除链表中的重复元素 【问题描述】 给定一个已排序的链表head , 删除原始链表中所有重复数字的节点,返回执行删除后的链表 。【保证链表已经按升序排列】】 【输入形式】 输入链表的元素(链表长度大于等于0) 【输出形式】 输出执行删除后的链表元素。(若删除后链表长度为0,则什么都不输出) 【样例输入】 1 2 3 3 4 4 5 【样例输出】 1 2 5 【样例说明】 链表长度不定,输入时以输入结束(或输入非法整数)作为链表输入结束。 【评分标准】 不允许修改程序结构,只完成删除重复值算法函数。

2023-01-07

【数据结构与算法】具有通配符?的模式匹配算法(BF).cpp

具有通配符?的模式匹配算法(BF) 【问题描述】 编写一个具有通配符?的模式匹配算法。?可以与任意一个字符匹配。 【输入形式】 输入主串s; 输入子串t; 输入比较起始位置pos。 【输出形式】 输出匹配结果:子串第一次出现的位置,若未找到,输出0。 【样例输入1】 there are many cats. ?re 1 【样例输出1】 3 【样例输入2】 thsdfiewnjf fsdfdsjewd f??f 3 【样例输出2】 13 【样例说明】 ?为英文状态符号。由于输入串中可能含有空格,请使用gets读入字符串。 【评分标准】 采用bf算法实现。

2023-01-07

【数据结构与算法】用尾指针标识的单循环链表实现队列r.cpp

用尾指针标识的单循环链表实现队列r 【问题描述】 用尾指针标识的单循环链表实现队列的基本操作。 【输入形式】 输入若干个整数(以空格分隔,非整数结束输入),其中0表示做出队操作,不为0的整数为入队元素。 【输出形式】 若出队错误输出“error”; 若最后队列为空,则输出“empty”; 若最后队列非空,依次输出队列的全部元素。 【样例输入1】 1 0 2 0 0 3 0 0 0 a 【样例输出1】 error 【样例输入2】 1 0 2 0 3 0 a 【样例输出2】 empty 【样例输入3】 1 2 3 0 0 4 0 5 a 【样例输出3】 4 5 【评分标准】 补充代码完成程序功能,不得修改程序中其他函数。

2023-01-07

【数据结构与算法】舞伴配对模拟.cpp

舞伴配对模拟 【问题描述】周末舞会上,男生和女生们分别进入舞厅,各自排成一队。假设每首舞曲只能有一名男生一名女生跳舞,跳舞开始,依次从男队和女队队头各取一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。配对成功的舞伴跳完舞排回各自队伍的最后。现要求写一算法模拟上述舞伴配对问题。 【输入形式】第一行输入两个整数n和k,n(n<1000)表示入场人数,k表示舞曲数。接下来n行输入n个人的姓名和性别(姓名中间无空格),姓名和性别用空格分隔。 【输出形式】成功配对则依次输出每首舞曲配对跳舞的男生姓名和女生姓名,姓名之间以空格分隔,不能成功配对(男生队或女生队无人)则输出“error”。 【样例输入1】 5 5 Tom m John m Alice f Jenny f Mary f 【样例输出1】 Tom Alice John Jenny Tom Mary John Alice Tom Jenny 【样例输入2】 4 5 Alice f Jenny f Mary f Rose f 【样例输出2】 error 【评分标准】

2023-01-07

【数据结构与算法】两个整数求和(链表).cpp

两个整数求和(链表) 【问题描述】 给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。 输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295 输出:2 -> 1 -> 9,即912 【输入形式】 第一行输入第1个整数(逆序); 第二行输入第2个整数(逆序); 每个数位以空格分隔。 【输出形式】 输出和的逆序。 【样例输入】 7 1 6 e 5 9 2 e 【样例输出】 2 1 9 【样例说明】 样例中的e,表示输入以非法整数作为输入结束; 两个整数的位数不一定相同,即有可能1+11111 也可能会出现,某个整数不存在的情况(即链表为空链的情况) 【评分标准】 不允许修改程序其他结构,只补充加法函数。

2023-01-07

【数据结构与算法】哈夫曼的编码和解码过程.cpp

哈夫曼的编码和解码过程 【问题描述】 已知字符及其权值,构造哈夫曼树,实现哈夫曼编码和解码过程。 【输入形式】 第一部分输入n个字符及其权值; 第二部分输入m个字符序列; 第三部分输入k个编码序列; 【输出形式】 输出每个字符序列对应的哈夫曼编码; 输出每个编码序列对应的字符序列; 【样例输入】 7 A,5 B,29 C,7 D,8 E,14 F,20 G,17 3 CEDFF ABCDEFG AAABBB 2 01111100100000 011001100110101010 【样例输出】 01111100100000 011010011101011000111 011001100110101010 CEDFF AAABBB 【样例说明】 【评分标准】

2023-01-07

【数据结构与算法】交换二叉树中所有结点的左右结点.c

交换二叉树中所有结点的左右孩子 【问题描述】 根据输入的先序遍历序列建立二叉树,输出先、中、后序三种遍历序列,交换二叉树中所有结点的左右孩子,再次输出交换左右孩子后的先、中、后序三种遍历序列。 【输入形式】 输入二叉树先序遍历序列建立二叉树。 【输出形式】 输出交换前、后三种遍历结果。 【样例输入】 A B C # # # # 【样例输出】 preorder:ABC inorder:CBA postorder:CBA After swap: preorder:ABC inorder:ABC postorder:CBA 【样例说明】 【评分标准】 在指定处填充代码完成程序功能。

2023-01-07

【数据结构与算法】层次遍历二叉树.c

层次遍历二叉树 【问题描述】 利用循环队列实现二叉树的层次遍历。 【输入形式】 先序建立二叉树序列 【输出形式】 二叉树的层次遍历序列 【样例输入】 + * a # # - b # # c # # / d # # e # # 【样例输出】 +*/a-debc 【样例说明】 【评分标准】 采用层次遍历算法。

2023-01-07

【数据结构与算法】利用非递归遍历统计二叉树的结点数.c

利用非递归遍历统计二叉树的结点数 【问题描述】 采用非递归遍历方式遍历二叉树,统计结点总数。(三种非递归方式均可) 【输入形式】 输入二叉树先序建立的序列 【输出形式】 输出结点总数 【样例输入】 A B C # # # # 【样例输出】 3 【评分标准】 必须采用非递归遍历方式。

2023-01-07

【数据结构与算法】计算二叉树的深度和叶子结点数.cpp

计算二叉树的深度和叶子结点数 【问题描述】 计算二叉树的深度和叶子结点数 【输入形式】 输入二叉树的先序遍历序列建立二叉树。 【输出形式】 输出二叉树的叶子结点数和深度。 【样例输入】 A B C # # # # 【样例输出】 Leaves:1 Depth:3 【评分标准】 采用递归遍历算法实现。

2023-01-06

【数据结构与算法】二叉树的建立与遍历.cpp

二叉树的建立与遍历 【问题描述】 以二叉链表的形式创建二叉树(不超过20个结点),并编写二叉树的遍历算法,实现二叉树的先序、中序及后序三种遍历。 【输入形式】 输入二叉树的结点信息(以先序遍历方式建立二叉树)。 【输出形式】 输出二叉树的先序、中序及后序三种遍历序列。 【样例输入1】 A B C # # # # 【样例输出1】 preorder:ABC inorder:CBA postorder:CBA 【样例输入2】 A B # # C # # 【样例输出2】 preorder:ABC inorder:BAC postorder:BCA 【评分标准】 在指定处补充代码完成二叉树遍历算法。

2023-01-06

【数据结构与算法】双向循环链表修复.cpp

双向循环链表修复 【问题描述】 假设一个双向循环链表,其结点含有三个域:prior,data和next。其中data为数据域;prior指向前驱结点,next指向后继结点。创建链表时,只链接了next域,导致链表只是一个单向循环链表。请补充算法,修复双向链表,可以实现双向访问。 【输入形式】 第1行输入n,表示输入n个数据。 第2行输入n个整数,创建循环链表。(只创建了单向) 【输出形式】 从头到尾输出链表元素; 从尾到头输出链表元素; 【样例输入】 5 1 2 3 4 5 【样例输出】 1 2 3 4 5 5 4 3 2 1 【样例说明】 【评分标准】 只补充修复算法函数,不允许修改其他代码部分。

2023-01-06

【数据结构与算法】判断序列是否为正确的出栈序列.c

判断序列是否为正确的出栈序列 【问题描述】 给出一个堆栈的输入序列,试判断一个输出序列是否能够由这个堆栈输出。如果能,返回总的出栈次数,如果不能,输出0。 序列的输入及输出都是从左往右。(输入输出序列皆为整数且没有重复的数字,如果一个数字在输入序列中没有出现,那么其在输出序列中也不会出现) 【输入形式】 第一行为输入序列的长度,其后依次为输入序列的数字; 第二行为输出序列的数字。 输入数据以空格隔开。 【输出形式】 如果是一个正确的出栈序列,则输出总的出栈次数, 否则返回0 【样例输入1】 5 1 2 3 4 5 4 5 3 2 1 【样例输出1】 5 【样例说明1】可以按以下顺序执行: push(1), push(2), push(3), push(4), pop() -> 4, push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1 通过5次pop操作可以得到输出序列,因此返回5 【样例输入2】 5 1 2 3 4 5 4 3 5 1 2 【样例输出2】0 【样例说明2】1不能在2之前

2023-01-06

【数据结构与算法】删除带头结点的单链表中元素值小于x的所有元素.cpp

【程序片段题】删除带头结点的单链表中元素值小于x的所有元素 【问题描述】有整数构成的带头结点单链表,根据输入的x值,删除表中元素值小于x的所有元素,输出删除后的单链表元素。 【输入形式】 第一行输入整数n,表示顺序表中有n个元素; 第二行输入n个整数建立带头结点单链表; 第三行输入x,用于删除表中小于x的元素 【输出形式】 输出删除后的表内元素 【样例输入】 6 2 9 5 7 1 6 5 【样例输出】 9 5 7 6 【样例说明】 【评分标准】 填充函数完成上述功能。

2023-01-06

【数据结构与算法】稀疏矩阵的三元组存储及快速转置.c

稀疏矩阵的三元组存储及快速转置 【问题描述】 实现稀疏矩阵的三元组表存储和快速转置运算。 【输入形式】 输入一个整型的6阶稀疏矩阵。 【输出形式】 输出稀疏矩阵的三元组表形式,使用快速转置方法进行转置运算,输出辅助数组num和cpot的值及转置后的三元组表形式。 【样例输入】 10 0 0 0 0 0 0 -20 0 0 40 0 0 0 30 0 0 0 0 0 0 0 0 0 0 0 0 50 0 0 0 0 -60 0 0 70 【样例输出】 M 6 6 7 0 0 10 1 1 -20 1 4 40 2 2 30 4 3 50 5 2 -60 5 5 70 num 1 1 2 1 1 1 cpot 0 1 2 4 5 6 T 6 6 7 0 0 10 1 1 -20 2 2 30 2 5 -60 3 4 50 4 1 40 5 5 70

2023-01-06

【数据结构与算法】在带头结点的单链表的最大值前面插入一个新的结点.c

在带头结点的单链表的最大值前面插入一个新的结点 【问题描述】 在带头结点单链表中查找最大值,将新输入的值插入到最大值前面,输出插入新元素后的单链表各元素。 【输入形式】 第一行输入若干个整数,以字母结束输入,建立带头结点的单链表; 第二行输入待插入的元素值。 【输出形式】 输出插入新值后的单链表各元素。 【样例输入1】 10 8 2 1 6 7 40 a 22 【样例输出1】 10 8 2 1 6 7 22 40 【样例输入2】 5 -12 -8 -100 -10 -3 e 100 【样例输出2】 100 5 -12 -8 -100 -10 -3 【样例说明】 【评分标准】 不得复制单链表内容,只能填充指定函数内容,不允许修改程序中其他代码。

2023-01-06

【数据结构与算法】连接两个循环单链表.c

连接两个循环单链表 【问题描述】 设两个无头结点循环单链表,用头指针head1,head2指向。试将head2链接到head1之后,并且依然为循环链表。(不借助其他的辅助空间) 【输入形式】 第1行输入n,m,表示创建长度为n,m的无头结点循环单链表; 第2行输入n个整数,创建head1; 第3行输入m个整数,创建head2。 【输出形式】 输出连接后的循环链表元素。 【样例输入】 5 3 1 2 3 4 5 60 70 80 【样例输出】 1 2 3 4 5 60 70 80 【样例说明】 【评分标准】 算法写在独立的函数内,不允许修改其他代码。

2023-01-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除