自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (BFS)广度优先搜索例子:迷宫,寻找连块数

//广度优先搜索主要分成以下几块0、节点node结构体;1、matrix[][],原始矩阵2、增量数组X[],Y[] 实现该坐标的左右上下的更新坐标3、判断时候下一个元素需要入队列的函数4、记录元素坐标时候已经访问的inq[][];//广度优先 BFS//寻找代码块的个数struct Node_B{ int x, y;};Node_B node;int n, m;const int

2016-09-17 15:20:30 514

原创 二路-归并排序归纳

【递归二路划分 + 分割后的2个数组归并】//归并排序:递归二路划分+归并思想==二路,归并排序//函数的参数列表是:a,l,r;这是每次需要循环递归的初始条件 :数组(操作对象),两个端点//不需要初始化端点,端点由函数传入 //1、二分+ 2.两个左右两边的倒叙递归;由里向外void Two_divide_Merge_Sort(int a[],int left ,int righ

2016-09-08 11:43:08 389

原创 算法入门:双指针法

一、双指针法【例子1】 :求一个有序数组中和=8的下标。=====================================设置两个不同的指针 ,或者头,或者尾。在一个递增的序列中,。根据结果分类,说明指针的下一步应该怎么移动。结果分类: a[i]+b[j]==8则i++,j–都相互靠近; a[i]+b[j] < 8 ,需要移动指针i ,i++; a[i]+b[j] > 8

2016-09-08 10:22:26 7156

原创 二分查找模板总结(递归与循环遍历两个版本)

二分查找:思路: 在有序*数组***a[]中查找K 1,不断分割 。2 用中间值去比较。====================尝试比较下面两种,得到递归函数的写法=========【递归版本】 int BinSerch2(int a[], int k ,int left ,int right){ int mid = (left + right) / 2;//1.不断分割 if (

2016-09-06 23:40:51 1052

原创 选择排序初步理解

//选择排序初步理解0,循环n趟。下面1,2是循环体: 1,从没有排序中找出最小值 。 minIndex = i;//待交换的索引:也就是从List[i+1]--List[n-1]处找到最小值索引,并赋值给minIndex 2, 将当前待交换的数(nIndex=i)与min交换void selcetSort(){ int a[6] = { 3,

2016-09-06 10:40:06 255

原创 递归调用理解【含有示例代码】

1 每一级的函数调用都有自己的局部变量.2 递归函数中,位于递归调用语句后的语句的执行顺序和各个被调用函数的顺序相反.    即位于递归函数入口前的语句,由外往里执行;    位于递归函数入口后面的语句,由里往外执行。3 虽然每一级递归有自己的变量,但是函数代码并不会得到复制.4 递归函数中必须包含可以终止递归调用的语句.“` int region(int a[], int cur

2016-09-05 21:57:39 429

原创 PATB1039: 到底买不买

PATB1039: 到底买不买 【经典】【思路】:在集合1中 找出其个数 字符都小的集合M,首先hash s1 记录次数 然后对照 s2如果有,就hash–;if(hash<0)则说明缺少了【参考答案】//这是一道十分典型的 在集合1中 找出其个数 字符都小的集合M//首先hash s1 记录次数 然后对照 s2如果有,就hash--;if(hash<0)则说明缺少了void B1039(){

2016-09-05 20:28:30 259

原创 PATB1047: 输出PATest

PATB1047: 输出PATest【思路】:设置字典为PATEST,同时设置HAsh来记录dict的次数 ,两者是一一对应的;两个数组的遍历 两个for循环即可, for (int i = 0; i < s.size(); i++) { for (int j = 0; j < 6; j++) { if (dict[j] == s

2016-09-05 20:28:02 253

原创 PATB1029: 字符统计

PATB1029: 字符统计【思路】:HASH经常用来求两个集合的交 集 补集等 。去重小能手1首先对目标集合中的元素进行HASH,这里面试大小写不区分,且只需要输出小写,所以统一转换成小写isalpha(s[i])判断是字母吗2然后对元集合进行过滤性输出 求最大值 老方法 还是设置一个maxID ,这里需要注意的是。索引需要换成char类型的输出printf("%c %d", maxId +'a

2016-09-05 20:27:27 341

原创 PATB1033: 旧键盘打字

PATB1029: 旧键盘打字【思路】:HASH经常用来求两个集合的交 集 补集等 。去重小能手1首先对目标集合中的元素进行HASH,这里+ 则 所有的大写字母over ,一个字母则小写一起go die 数字无影响的2然后对元集合进行过滤性输出【知识点】fill(a,a+5,true)isupper()判断字符是大写字母吗【参考答案】//B1033旧键盘打字void B1033(){ st

2016-09-05 20:26:54 472

原创 PATB1029: 旧键盘

PATB1029: 旧键盘【方法二】【思路】:HASH经常用来求两个集合的交 集 补集等 。去重小能手首先对目标集合中的元素进行HASH,这里需要统一大小写‘: b[i] = towupper(b[i]);【知识点】然后在原来的集合中找 没有被HASH化的元素 输出 并HASH此字符,以实现去重,输出的时候需要判断,没有被HASH化才可以被打印 if (hash_T[a[i]]

2016-09-05 20:26:17 335

原创 PAT分类解析专辑说明

这个专辑主要是程序设计刚刚入门时候的做题心得与积累 目前已经完成的是入门模拟 和字符串操作 在PATB中两部分总共占有20道题,(目前总55题),基本分数为 15 ,20分 是简单题目。 后面又是将对每个题目的打上标签 ,以便于针对性练习

2016-09-04 20:25:48 260

原创 PAT B 简单思维模板

2016-09-04 20:17:28 233

原创 PATB1024:科学记数法

PATB1024:科学记数法【思路】: 输出的字符串由几部分组成 通过 i str[i] 来索引输出字符串 每部分 需要满足什么条件 才输出 常用的是 str[i] pos pos-3 表示长度 exp为字符–》转换成数字【知识点】 每部分 需要满足什么条件 才输出 for (int i = 1; i < pos; i++)//也是分成3 部分 思考每部分

2016-09-04 20:04:55 345

原创 PATB1014:福尔摩斯的约会

PATB1014:福尔摩斯的约会【思路】: 输入 四个字符串 ,分别求其第一个满足条件的字符。用Hash输出【知识点】 求第一个满足条件的字符用 for break及时退出循环 一个字符串中分两次不同的的遍历 来判断的不同的条件 用 i 来连接 **for (i = 0; i < size1; i++)** { if (S1[i] == S2

2016-09-04 20:04:13 398

原创 PATB1048:数字加密

PATB1048:数字加密【思路】: 输入 循环 判断,只需要对每个元进行一次操作即可【知识点】 杂类用hash表示char has_z[3] = { 'J', 'Q', 'K' };【知识点】 对于c的字符数组可以用reverse来进行字符数组的反转,本题由于是字符到bit的操作,所以字符反转是常规思路reverse(a, a + strlen(a));reverse(b, b +

2016-09-04 20:03:47 336

原创 PATB1031:查验身份证

PATB1031:查验身份证【思路】: 输入 遍历每个字符 分类 不符合的用flag标记 通过标记输出结果 1、含有X的 2、不含有X 但是验证不通过的 都是用标记flag 3、通过标记输出结果【知识点】 如果中途break j < N ,通过循环变量判断来实现分类> ` for (j = 0; j < 17; j++)//遍历一个字符串完成

2016-09-04 20:03:10 427

原创 PATB1002:写出这个数

PATB1002:写出这个数【思路】: bit[index] 用hash有条件的输出 。思路和上题目基本类似【参考答案】#include <cstdio> #include <cstring> //位--》数字--》位:str[i]-'0',除基取余,bit[num++]保存,然后输出,i=[num-1,0:1],if(i>0) 打印“ ” else打印“\n”char strNum[110];

2016-09-04 20:02:28 716

原创 PATB1021:个位数统计

PATB1021:数 的bit[]统计【思路】: bit[index] 用hash有条件的输出【参考答案】#include <cstdio> #include <cmath> #include <cstring> //count[str[i]]++,索引也是变量,统计1个位数void tongjisuzhu(){ char str[1010]; gets(str); int len

2016-09-04 20:02:06 272

原创 PATB1006:换个格式输出整数

PATB1006:数字转换成bit[ ]的数组【思路】: bit[count++],获取数的每个位 数—数组,count 4 3 2 这样的数组打印需要逆序输出【知识点】 bit[count++],获取数的每个位 数—数组,countwhile (n>0) { bit[count++] = n % 10; n /= 10; }

2016-09-04 20:01:07 230

原创 PATB1009:说反话

PATB1009:说反话【思路】: 输入的是一个中间含有空格的字符串(末尾不含有字符串)。 输出是多个单词 中间的空格需要自己添加 用word[r][l] 一个个累加str[i]的字符。如果遇到“ 空格”,就结束word一行,进行下一个单词【知识点】 > 用word[r][l] 一个个累加str[i]的字符。如果遇到“ 空格”,就结束word一行,进行下一个单词

2016-09-04 19:59:14 583

原创 PATB1028:人口普查

PATB1028:人口普查 【经典】 + 结构体的多级排序 与求最值 其实可以考虑 sort【知识点】 结构体的多级比较 两次运用,一次是合法验证,一次是求最值比较 三步骤 : 1、结构体; 2、cmp, 3、【合法验证与比较】 (日期left < temp //重新完成B1028 思路 判断一个数 //思路 : 输入日期 有效(日期mi

2016-09-04 19:58:20 357

原创 PATB1004:成绩排名

PATB1004:成绩排名 简单结构体的 + 数组 求最值【参考答案1】//B1004成绩排名; 常规思路 与节省空间思路struct STU1{ string name; string ID; int score;}stu1[1010];void B1004(){ int N; cin >> N; int maxId = 0, minId=0;

2016-09-04 19:53:46 467

原创 PATB1041:考试座位号

PATB1041:考试座位号【思路】:很典型的 做hash[]来装score[sid], 每个学校的分数总和 做hash[]来装score[sid], 每个学校的分数总和 求出最大值【知识点】 用Hash[]的重要初始化过程 根据索引取找到值 其他的无关紧要的用结构添加一个属性就好了 index —> Seat[index]struct Stu{

2016-09-04 19:50:52 446

原创 PATB1032:挖掘机哪家强

PATB1032:挖掘机哪家强 与 B1041基本类似【思路】:很典型的 做hash[]来装score[sid], 每个学校的分数总和 做hash[]来装score[sid], 每个学校的分数总和 求出最大值int sum[100010];void B1032(){ int N; cin >> N; int sid, score; for (in

2016-09-04 19:47:51 444

原创 PATB1018:石头剪刀布

PATB1018:石头剪刀布【思路】: 循环–判断条件满足就 记录 记录: 赢 平 输 ; 运用Hash映射求出赢得次数最多的手势 :实质是求出最大值得索引映射【知识点】 求出一个数组的最大值得索引映射char ykn[3] = { 'B', 'C', 'J' }; int max0 = 0;for (int i = 0; i < 3; i++){

2016-09-04 19:46:33 479

原创 PATB1012:数字分类输出

PATB1012:数字分类输出【思路】: if– else–的终极运用 每个输出都要判断,所以别老想着用循环【知识点】 注意点:输出时候需要判断,结果为空吗?如果为空,输出‘N’//准备输出 if (count[0]==0){ printf("N "); }else{ printf("%d ", ans[0]); } 注意点

2016-09-04 19:45:23 333

原创 PATB1008:数组元素右移

【思路】:分段输出即可 (一句话系列)【知识点】 数据之间用“ 空格 “表示,最后用”\n“ 技巧 for (int i=0 ;i,N ;i++){ cout << a[i] ; #count记录的是循环趟数 if(count < N){ cout<< " " } else

2016-09-04 19:43:35 296

原创 PATB1046:划拳

PATB1046:划拳【思路】:循环 + 判断 (一句话系列) 主要考察点是 分类 a2!=b2 && a1+b1=a2 满足条件//PATB1018 按照题意进行模拟,锤子剪刀布void CJB(){ char Game[3] = {}; int yin[2] = { 0 }; int shu[2] = { 0 }; int pin = 0; int

2016-09-04 19:35:42 267

原创 PATB1026:程序计算时间

【思路】: 四舍五入得到秒 按照格式输出 H M S 输入C2 c1,计算round(t), 小数必须是double型号的 t/3600–小时H ;(t%3600)–不满足1H剩下的秒数;(t%3600)/60–M; void calctime1(){ int c1, c2, ans; cin >> c1>>c2;

2016-09-04 19:31:36 286

原创 PAT B1016: 部分A+B

PAT分类解析及知识点总结:入门模拟【B1016: 部分A+B 】【思路】:实际上是找 数字A 中出现的位 bit 输入数字A, 循环 + if() :检索数字中含有的 Da 记录 并 计算Pa 操作: Pa=Da+Pa*10; 【知识点】 (一)通过字符串 数字 找到 bit 然后重新组成数字 for (int i = 0; i < A.length(); i

2016-09-04 19:26:16 265

空空如也

空空如也

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

TA关注的人

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