
c++
夏日流萤
这个作者很懒,什么都没留下…
展开
-
OJ:Til the Cows Come Home(最短路径—Dijkstra算法)
题目描述Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beauty sleep, so she wants to get back as quickly as possible.Farmer John’s field has原创 2020-11-07 20:32:51 · 295 阅读 · 0 评论 -
OJ:Bad Cowtractors(最大生成树)
题目描述Bessie has been hired to build a cheap internet network among Farmer John’s N (2 <= N <= 1,000) barns that are conveniently numbered 1…N. FJ has already done some surveying, and found M (1 <= M <= 20,000) possible connection routes between原创 2020-11-07 20:27:00 · 262 阅读 · 0 评论 -
OJ: Agri-Net(最小生成树)
题目描述Farmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He needs your help, of course.Farmer John ordered a high speed connection for his farm and is going to share his原创 2020-11-07 20:24:16 · 332 阅读 · 0 评论 -
OJ:确定比赛名次(拓扑排序)
题目描述有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。输入输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。原创 2020-11-07 20:21:24 · 899 阅读 · 0 评论 -
OJ:六度分离(邻接矩阵)
题目描述1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为“小世界现象(small world phenomenon)”的著名假说,大意是说,任何2个素不相识的人中间最多只隔着6个人,即只用6个人就可以将他们联系在一起,因此他的理论也被称为“六度分离”理论(six degrees of separation)。虽然米尔格兰姆的理论屡屡应验,一直也有很多社会学家对其兴趣浓厚,但是在30多年的时间里,它从来就没有得到过严谨的证明,只是一种带有传奇色彩的假说而已。Lele对这个理论相当有兴趣,于是原创 2020-11-07 20:14:37 · 419 阅读 · 1 评论 -
OJ:路障c++
题目描述B君站在一个n×n的棋盘上。最开始,B君站在(1,1)这个点,他要走到(n,n)这个点。 B君每秒可以向上下左右的某个方向移动一格,但是很不妙,C君打算阻止B君的计划。每秒结束的时刻,C君会在(x,y)上摆一个路障。B君不能走在路障上。B君拿到了C君准备在哪些点放置路障。所以现在你需要判断,B君能否成功走到(n,n)。保证数据足够弱:也就是说,无需考虑“走到某处然后被一个路障砸死”的情况,因为答案不会出现此类情况。输入首先是一个正整数T,表示数据组数。对于每一组数据:第一行,一个正整转载 2020-10-31 15:49:51 · 787 阅读 · 0 评论 -
OJ:海战在一个方形的盘上放置了固定数量和形状的船只,每只船却不能碰到其它的船。在这个题中,我们仅考虑船是方形的,所有的船只都是由图形组成的方形。编写程序求出该棋盘上放置的船只的总数。
题目描述在峰会期间,武装部队得处于高度戒备。警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机。此外,巡洋船只和舰队将被派去保护海岸线。不幸的是因为种种原因,国防海军部仅有很少的几位军官能指挥大型海战。因此,他们考虑培养一些新的海军指挥官,他们选择了“海战”游戏来帮助学习。在这个著名的游戏中,在一个方形的盘上放置了固定数量和形状的船只,每只船却不能碰到其它的船。在这个题中,我们仅考虑船是方形的,所有的船只都是由图形组成的方形。编写程序求出该棋盘上放置的船只的总数。输入输入文件头一行转载 2020-10-31 15:29:27 · 955 阅读 · 0 评论 -
OJ:奇怪的电梯
题目描述有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第i层楼(1≤i≤N)上有一个数字Ki(0≤Ki≤N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3,3,1,2,5代表了Ki(K1=3,K2=3,…),从1楼开始。在1楼,按“上”可以到4楼,按“下”是不起作用的,因为没有−2楼。那么,从A楼到B楼至少要按几次按钮呢?输入共二行。第一行为3个用空格隔开的正整数,表示N,A,B(1≤N≤20转载 2020-10-31 15:10:40 · 548 阅读 · 0 评论 -
01迷宫:有一个仅由数字0与1组成的n×n格迷宫。若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。
题目描述有一个仅由数字0与1组成的n×n格迷宫。若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。 你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。输入第1行为两个正整数n,m。 下面n行,每行n个字符,字符只可能是0或者1,字符之间没有空格。接下来m行,每行2个用空格分隔的正整数i,j,对应了迷宫中第i行第j列的一个格子,询问从这一格开始能移动到多少格。输出m行,对于每个询问输出相应答案。样例输转载 2020-10-31 14:28:33 · 3716 阅读 · 5 评论 -
求细胞数量:一矩形阵列由数字 0 到 9 组成,数字 1 到 9 代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。
题目描述一矩形阵列由数字 0 到 9 组成,数字 1 到 9 代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。输入第一行两个整数代表矩阵大小 n 和 m。 接下来 n 行,每行一个长度为 m 的只含字符 0 到 9 的字符串,代表这个n×m 的矩阵。输出一行一个整数代表细胞个数。样例输入 Copy4 100234500067103456050020456006710000000089样例输出 Copy4提示0 < m, n &转载 2020-10-31 14:20:39 · 8181 阅读 · 0 评论 -
马的遍历:有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步
题目描述有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步输入一行四个数据,棋盘的大小和马的坐标输出一个n*m的矩阵,同一行元素之间用空格分离。代表马到达某个点最少要走几步。不能到达则输出-1。样例输入3 3 1 1样例输出0 3 23 -1 12 1 4思路:利用广度优先搜索(BFS)#include<iostream>#include<queue>#include<cstr转载 2020-10-31 14:09:59 · 6064 阅读 · 5 评论 -
士兵队列训练问题:某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的
题目描述:某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。输入:本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。输出:共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空原创 2020-10-25 10:46:50 · 5303 阅读 · 1 评论 -
OJ用C++解决问题Rails
题目描述There is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortunately, funds were extremely limited that time. It was possible to establish only a surface track. Moreover, it turned原创 2020-10-24 08:04:21 · 599 阅读 · 0 评论 -
OJ C++利用栈实现四则运算
题目描述输入一行字符串,是包含±*/合法运算的一行字符串,要求解析字符串的值。输入第一行包括一行整数T,表示样例个数。对于每一个样例,输入一行字符串代表合法运算。输出对于每一个样例,输出一个数字表示结果。结果误差要求小于1e-4。样例输入23/4+22+3*4样例输出2.7514思路:用两个栈分别存放浮点型数字和字符型“+、-、*、/”运算符,由于两者数据类型不同,我定义了两种类型的栈,代码量较大,实际上应该可以用模板template实现两个栈共用一个栈模板,从而简化代码。原创 2020-10-23 16:56:30 · 1516 阅读 · 1 评论 -
TJU OJ c++愚人节的礼物
题目描述四月一日快到了,Vayko想了个愚人的好办法——送礼物。嘿嘿,不要想的太好,这礼物可没那么简单,Vayko为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物。盒子里面可以再放零个或者多个盒子。假设放礼物的盒子里不再放其他盒子。用()表示一个盒子,B表示礼物,Vayko想让你帮她算出愚人指数,即最少需要拆多少个盒子才能拿到礼物。输入本题目包含多组测试,请处理到文件结束。每组测试包含一个长度不大于1000,只包含’(’,’)'和’B’三种字符的字符串,代表Vayko设计的礼物透视图。你可以原创 2020-10-23 08:47:34 · 644 阅读 · 0 评论 -
合并链表
题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。输入第一行输入一个数字T表示样例个数。对于每个样例,第一行输入两个数字m, n,分别表示两个链表的长度第二行输入m个数字,表示第一个链表第三行输入n个数字,表示第二个链表输出对于每一组样例,输出 m + n个数表示合并结果。样例输入22 21 23 43 23 4 51 4样例输出1 2 3 41 3 4 4 5提示m + n <= 1000#include <io原创 2020-10-17 12:59:39 · 2343 阅读 · 0 评论 -
珠心算测验
珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?最近老师出了一些测验题,请你帮忙求出答案。输入共两行,第一行包含一个整数nn,表示测试题中给出的正整数个数。 第二行有nn个正整数,每两个正整数之间用一个空格隔开,表示测试题中给原创 2020-10-16 17:25:50 · 756 阅读 · 1 评论 -
三角形个数:小b有一个仅包含非负整数的数组a,她想知道有多少个三元组(i,j,k),满足i<j<k且a[i],a[j],a[k]可能作为某个三角形的三条边的边长。
小b有一个仅包含非负整数的数组a,她想知道有多少个三元组(i,j,k),满足i<j<k且a[i],a[j],a[k]可能作为某个三角形的三条边的边长。输入:第一行输入一个正整数n,表示数组a中元素个数;第二行n个非负整数,表示a中元素,以空格隔开;其中0<n≤1000,a中任意元素a[i]满足0≤a[i]≤1000。输出:输出一个数,表示满足题意的三元组个数样例输入 Copy42 2 3 4样例输出 Copy3法一:会超时,采用三重for循环,最容易想到,但运行时间过长,原创 2020-10-15 23:49:11 · 2309 阅读 · 2 评论 -
双向链表的建立、插入、查找和删除
双向链表的建立、插入、查找和删除#include <stdio.h>#include <stdlib.h>typedef int ListData;typedef struct dnode{ ListData data; struct dnode *llink,*rlink;}DblNode;typedef DblNode* DblList;DblList CreatList(DblList &first)//创建双向链表{ fi原创 2020-07-02 17:32:15 · 1602 阅读 · 0 评论 -
将一个链表倒置,例如:链表中的内容为abcdefghijk,倒置后为kjihgfedcba
注:这里仅给出将不带头结点的单链表的倒置#include <stdio.h>#include <stdlib.h>typedef char ListData;typedef struct node{ ListData data; struct node *link;}ListNode;typedef ListNode* LinkList;LinkList CreatListF()//头插法创建无头结点的单链表{ ListData ch;原创 2020-06-30 18:21:30 · 347 阅读 · 0 评论 -
创建链表(头插法、尾插法),向链表中插入元素,删除链表中的某个元素,查找链表中的元素(按值找、按序号找),输出链表中的元素
注:这里仅给出带头结点的单链表相关操作算法#include <stdio.h>#include <stdlib.h>typedef char ListData;typedef struct node//链表节点{ ListData data; struct node *link;}ListNode;typedef ListNode* LinkList;LinkList first;//链表头指针LinkList CreatListF()//头插原创 2020-06-30 08:19:23 · 997 阅读 · 0 评论 -
创建一个顺序表, 向顺序表中插入元素,查找顺序表中的元素(按值查找和按序号查找),删除顺序表中的某个元素,输出顺序表中的元素
创建一个顺序表, 向顺序表中插入元素,查找顺序表中的元素(按值查找和按序号查找),删除顺序表中的某个元素,输出顺序表中的元素算法:#include <stdio.h>#include <stdlib.h>#define ListSize 100typedef int ListData;typedef struct{ ListData *data; int length;}SeqList;void InitList(SeqList &L)//原创 2020-06-26 11:42:33 · 7118 阅读 · 6 评论 -
快速排序算法,并输出每一轮后数据位置的交换
快速排序算法#include <stdio.h>#include <stdlib.h>#define MAXSIZE 20//顺序表长度typedef int KeyType;typedef struct{ KeyType Key;}RcdType;typedef struct{ RcdType r[MAXSIZE+1]; int length;}SqList;void swap(RcdType &r1,RcdType &原创 2020-06-06 19:22:32 · 5726 阅读 · 2 评论 -
c++折半插入排序算法
折半插入排序算法#include <stdio.h>#include <stdlib.h>#define MAXSIZE 20//顺序表长度typedef int KeyType;typedef struct{ KeyType Key;}RcdType;typedef struct{ RcdType r[MAXSIZE+1]; int length;}SqList;void InitList(SqList &L){ in原创 2020-06-06 19:18:07 · 638 阅读 · 0 评论 -
c++直接插入排序算法
直接插入排序算法#include <stdio.h>#include <stdlib.h>#define MAXSIZE 20//顺序表长度typedef int KeyType;typedef struct{ KeyType Key;}RcdType;typedef struct{ RcdType r[MAXSIZE+1]; int length;}SqList;void InitList(SqList &L){ in原创 2020-06-06 19:11:19 · 567 阅读 · 1 评论 -
c++有向图的邻接表的创建与输出
有向图的邻接表的创建与输出算法:#include <iostream>using namespace std;#define MaxVexNum 100//顶点的最大个数typedef char VerTexData;//顶点数据类型typedef int EdgeData;//边权值的类型typedef struct node//边界点{ int dest;//目标节点位置 EdgeData cost;//边的权值 struct node *link;/原创 2020-05-08 19:49:59 · 6296 阅读 · 1 评论 -
c++图的邻接矩阵与邻接表的转换
图的邻接矩阵与图的邻接表的转换算法:#include <iostream>using namespace std;#define INFINITY 65535const int MaxVexNum =10;//顶点的最大个数typedef char VerTexData;//顶点数据类型typedef int EdgeData;//边权值的类型typedef struct{ VerTexData VexList1[MaxVexNum];//顶点表原创 2020-05-08 22:42:37 · 2666 阅读 · 0 评论 -
有向图的邻接矩阵的建立和输出
有向图的邻接矩阵的建立和输出算法:#include <iostream>using namespace std;#define INFINITY 65535;const int MaxVexNum =10;//最大顶点个数typedef char VerTexData;//顶点数据类型typedef int EdgeData;//边上权值类型typedef struct{ VerTexData VexList[MaxVexNum];//顶点表 E原创 2020-05-08 18:20:40 · 7581 阅读 · 1 评论