杭电OJ
123fighting
这个作者很懒,什么都没留下…
展开
-
杭电1016 素数环+DFS基础变形
题目意思不难理解,注意顺时针和逆时针都必须满足要求思路:必须从1开始,想到用1加上2~n的全排列来做,再在DFS的基础代码加入素数判定即可代码:#include <stdio.h>#include <math.h> int dfs(int level);int is_prime(int x);int visited[20],n; int level=0;int b[20];//存放排列数的数组 int main(){ b[0]=1; int order=1;原创 2021-09-05 21:00:16 · 119 阅读 · 0 评论 -
DFS入门--经典迷宫问题(杭电1010)
1. DFS概念 通俗一点就是不撞南墙不回头。是一个递归的过程。 数据结构中的定义:假设初始状态是所有顶点未曾被访问,则深度优先搜索可从 图中某个顶点v0出发,访问此顶点,然后依次从v0的邻接点出发递归的进行同样 的深度搜索,直到图中所有和v0有路径相通的顶点都被访问到。好像还是很抽象, 那上图吧。假设从E点出发,当有多种选择时,采用字母序的策略选取下一个邻接点。选择A为下一个邻接点,则从A出发进行递归搜索。依此类推,依次从B,C,D出发进行递归搜索。在访问了D之后,由原创 2021-08-30 22:22:00 · 408 阅读 · 0 评论 -
杭电1084 (C++)
这题的题目意思不难理解,关键在于获得它们的排名他,还要按照输入顺序输出得分。要点:①创建结构数组s储存每个学生做对的题数和用的时间。②拷贝一个①里面的结构数组a,然后对a排序,得到每个学生的排名,排名从0开始。0是最高的排名。③判断(当前排名-比当前答对题数多的人数)是否大于或等于答对当前题数的一半人数。#include <iostream>#include <algorithm>#include <cstdio>using namespace std;原创 2021-08-25 20:43:23 · 119 阅读 · 0 评论 -
杭电1083
这题其实就是二分图的最大匹配的问题,用基本的匈牙利算法就可以解决,每个课程必须找到一个唯一的学生代表。想要了解匈牙利算法可以看这篇博客https://blog.csdn.net/m0_51736862/article/details/119895208,拿题目给出的数据集1可以画出如下二分图。我们要找出课程P顶点集的最大匹配。-#include <iostream>#include <cstring>using namespace std;//为每门课程找一个代表学生原创 2021-08-24 21:39:03 · 58 阅读 · 0 评论 -
杭电1082(stack容器的使用)
遇到这种计算表达式,通常用栈来处理。要点:①创建结构体,用来容纳矩阵的代表字符,行,列。②从左到右处理计算表达式,遇到左括号或矩阵,入栈。遇到右括号,取栈顶元素为右乘矩阵,栈顶元素出栈;再取栈顶元素为左乘矩阵,栈顶元素出栈。左乘矩阵与右乘矩阵乘积入栈(在乘积入栈前,与右括号匹配的左括号要出栈),并累加乘法次数。代码:#include <iostream>#include <cstring>#include <stack>using namespace st转载 2021-08-21 21:52:20 · 77 阅读 · 0 评论 -
杭电1073 (C++)
题意:比较两个字符串,完全相同的话输出Accepted。除去’\n’,’ ‘,’\t’后相同的话输出Presentation Error。除去’\n’,’ ‘,’\t’后不相同的话输出Wrong answer。要点:①一个输入可以占几行,输入包含换行符(’\n’),可以用cin.get()函数。②字符串数据部分的截取,除去START和END占据的部分。③字符串比较时循环的截止条件。代码:#include <iostream>#include <cstring&g转载 2021-08-21 16:15:57 · 117 阅读 · 0 评论 -
杭电1075(使用STL中的map容器)
题目的意思应该不难理解。这里看到题目就很容易想到用map建立英语和火星语言之间的映射关系。遍历输入的数据字符串,如果遇到不是小写a~z的字符,并且这之前的单词在字典里,输出与之对应的英语,否则输出原本的单词(也由a-z构成但不在字典里),最后要记得输出分隔符,像空格等等。#include <iostream>#include <map>#include <cstring>#include <cstdio>using namespace std;i转载 2021-08-21 10:49:51 · 81 阅读 · 0 评论 -
杭电1070 (C++)(sort函数)
#include <iostream>#include <algorithm>using namespace std;struct milk{ string name; int price;//价格 int vol;//体积 double av;//平均每天价钱 };milk mil[101];bool cmp(milk x,milk y);int main(){ int T,n,i,td; cin>原创 2021-08-20 19:37:13 · 200 阅读 · 0 评论 -
杭电1062
这题主要就是根据空格来进行处理#include <stdio.h>#include <string.h>int main(){ int T,pos,i,j,k,len; char a[1050]; scanf("%d",&T); getchar(); while(T--){ gets(a); len=strlen(a); for(i=0;i<len;i++){原创 2021-08-17 21:13:56 · 61 阅读 · 0 评论 -
杭电OJ 1050
题目大意:就是在双侧南北房间之间移动桌子,走廊很窄,所有的桌子都很大,只有一张桌子能在走廊上移动。共享走廊的两个房间之间的移动必须按先后顺序执行,不共享走廊的两个房间之间的移动则可以同时进行。注意:Input中第一个房间号可能大于第二个房间号,因此我用了swap()函数。思路:首先将走廊两侧的房间看作两个同等大小的数组,下标均为0-200。房间号为奇数,则房间号除以2就是下标。房间号为偶数,则房间号除以2减1就是下标。然后定义一个room数组,相当于走廊,移动过程中经过了哪几个房间,则对应位置ro原创 2021-08-17 16:30:54 · 172 阅读 · 0 评论 -
杭电1048 The Hardest Problem Ever
这题的输入格式要看懂,之前搞错了,wa了好多次,是每次测试样例输入一个字符串,当输入为“END”时输出结果。这题我主要是用了循环数组的思想,详情请看代码。#include <stdio.h>#include <string.h>int main(){ int i,len; char p[27]={"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; char s[300],b[300]; while(gets(s)!=NULL){ len=strlen原创 2021-08-16 18:59:40 · 229 阅读 · 0 评论 -
杭电1039 Easier Done Than Said?
问题描述密码安全是一件棘手的事情。用户更喜欢易于记住的简单密码(如好友),但此类密码通常不安全。有些网站使用随机计算机生成的密码(如 xvtpzyo),但用户很难记住它们,有时会将它们写在粘在计算机上的笔记上。一个潜在的解决方案是生成相对安全但仍然易于记住的"可发音"密码。FnordCom 正在开发这样一个密码生成器。您在质量控制部门工作,您的工作是测试生成器并确保密码可以接受。要被接受,密码必须满足这三个规则:它必须包含至少一个元音。它不能包含三个连续元音或三个连续辅音。它不能包含同一字母的连转载 2021-08-15 16:01:46 · 140 阅读 · 0 评论 -
杭电OJ 1035
杭电OJ 1035题目的意思不难理解,我建了一个坐标系使得字符二维数组a[x][y]中x,y分别对应坐标系中的x坐标和y坐标。以第一个样例为例,建立的坐标系如下,红色网格为运动范围,超出红色网格范围,即x>=行数或x<0或y>=列数或y<0时,机器人退出。#include <stdio.h>#include <string.h>char a[1000][1000];//指令数组int b[1000][1000]={0};//标志数组,标志该位置原创 2021-08-13 23:01:24 · 181 阅读 · 0 评论