自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 全排列的三种解法

以数字1,2,3为例,得到全排列{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,2,1},{3,1,2}方法1:for循环   给出的数比较少可以用暴力循环求解。#include <stdio.h>int main(){ int i,j,k; for(i=1;i<=3;i++){ for(j=1;j<=3;j++){ for(k=1;k<=3;k++){ if(i!=j&&j!=

2021-09-06 15:49:53 5316 3

原创 杭电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 123

原创 DFS入门--经典迷宫问题(杭电1010)

1. DFS概念 通俗一点就是不撞南墙不回头。是一个递归的过程。 数据结构中的定义:假设初始状态是所有顶点未曾被访问,则深度优先搜索可从 图中某个顶点v0出发,访问此顶点,然后依次从v0的邻接点出发递归的进行同样 的深度搜索,直到图中所有和v0有路径相通的顶点都被访问到。好像还是很抽象, 那上图吧。假设从E点出发,当有多种选择时,采用字母序的策略选取下一个邻接点。选择A为下一个邻接点,则从A出发进行递归搜索。依此类推,依次从B,C,D出发进行递归搜索。在访问了D之后,由

2021-08-30 22:22:00 422

原创 折纸2(C语言)

要点:这种题主要就是找规律,得到计算表达式。AC:y=3/4x BP:y=-|CP|/4x+3找出AC与BP两条直线相交F的坐标为(12/(3+|CP|),3/4x)a=△BCP=2∣CP∣=2×pq×3=6pq=6p(p+q)(p+q)qa=\bigtriangleup BCP=2|CP|=2\times\frac{p}{q}\times3=\frac{6p}{q}=\frac{6p\left( p+q \right)}{\left( p+q \right)..

2021-08-28 18:12:36 410

原创 杭电1084 (C++)

这题的题目意思不难理解,关键在于获得它们的排名他,还要按照输入顺序输出得分。要点:①创建结构数组s储存每个学生做对的题数和用的时间。②拷贝一个①里面的结构数组a,然后对a排序,得到每个学生的排名,排名从0开始。0是最高的排名。③判断(当前排名-比当前答对题数多的人数)是否大于或等于答对当前题数的一半人数。#include <iostream>#include <algorithm>#include <cstdio>using namespace std;

2021-08-25 20:43:23 123

原创 杭电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 65

原创 二分匹配的一些基本概念

1.二分图:二分图又称作二部图,是图论中的一种 特殊模型 。设G= (V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集 (A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集 (i in A,j in B),则称图G为一个二分图2.匹配:在图论中,一个「匹配」是一个边的集合,其中任意两条边都没有公共顶点。3.最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配。4.完美匹配:如果一个图的某个匹配中,所有的顶点都是匹配点,那么它就是一个

2021-08-24 18:25:54 176

转载 趣写算法之匈牙利算法

【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程】匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。-------等等,看得头大?那么请看下面的版本:通过数代人的努力,你终于赶上了剩男剩女的大潮,假设你是一位光荣的新世纪媒人,在你的手上有N个剩男,M个剩女,每个人都可能对多名异性有好感(-_-||暂时不考

2021-08-24 18:12:27 72

转载 杭电1082(stack容器的使用)

遇到这种计算表达式,通常用栈来处理。要点:①创建结构体,用来容纳矩阵的代表字符,行,列。②从左到右处理计算表达式,遇到左括号或矩阵,入栈。遇到右括号,取栈顶元素为右乘矩阵,栈顶元素出栈;再取栈顶元素为左乘矩阵,栈顶元素出栈。左乘矩阵与右乘矩阵乘积入栈(在乘积入栈前,与右括号匹配的左括号要出栈),并累加乘法次数。代码:#include <iostream>#include <cstring>#include <stack>using namespace st

2021-08-21 21:52:20 81

转载 杭电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 124

转载 杭电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 85

原创 杭电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 208

原创 杭电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 64

原创 杭电OJ 1050

题目大意:就是在双侧南北房间之间移动桌子,走廊很窄,所有的桌子都很大,只有一张桌子能在走廊上移动。共享走廊的两个房间之间的移动必须按先后顺序执行,不共享走廊的两个房间之间的移动则可以同时进行。注意:Input中第一个房间号可能大于第二个房间号,因此我用了swap()函数。思路:首先将走廊两侧的房间看作两个同等大小的数组,下标均为0-200。房间号为奇数,则房间号除以2就是下标。房间号为偶数,则房间号除以2减1就是下标。然后定义一个room数组,相当于走廊,移动过程中经过了哪几个房间,则对应位置ro

2021-08-17 16:30:54 179

原创 杭电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 235

转载 杭电1039 Easier Done Than Said?

问题描述密码安全是一件棘手的事情。用户更喜欢易于记住的简单密码(如好友),但此类密码通常不安全。有些网站使用随机计算机生成的密码(如 xvtpzyo),但用户很难记住它们,有时会将它们写在粘在计算机上的笔记上。一个潜在的解决方案是生成相对安全但仍然易于记住的"可发音"密码。FnordCom 正在开发这样一个密码生成器。您在质量控制部门工作,您的工作是测试生成器并确保密码可以接受。要被接受,密码必须满足这三个规则:它必须包含至少一个元音。它不能包含三个连续元音或三个连续辅音。它不能包含同一字母的连

2021-08-15 16:01:46 146

原创 杭电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 187

空空如也

空空如也

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

TA关注的人

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