自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【OJ】 星际密码、数根

1.星际密码题目描述  星际战争开展了100年之后,NowCoder终于破译了外星人的密码!他们的密码是一串整数,通过一张表里的信息映射成最终4位密码。表的规则是:n对应的值是矩阵X的n次方的左上角,如果这个数不足4位则用0填充,如果大于4位的则只输出最后4位。OJ连接|1 1|^n => |Xn …||1 0| |… …|例如n=2时,|1 1|^2 => |1 1| * |1 1| => |2 1||1 0| |1 0| |1 0| |1 1

2020-08-20 23:40:28 423

原创 【OJ】 迷宫问题(递归)

题目描述  定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: OJ连接int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短

2020-08-20 00:01:48 499

原创 【OJ】 年终奖(动态规划)

题目描述  小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。给定一个6*6的矩阵board,其中每个元素为对应格子的礼物价值,左上角为[0,0],请返回能获得的最大价值,保证每个礼物价值大于100小于1000。OJ连接解题思路  定

2020-08-19 23:32:05 329

原创 【OJ】 找出字符串中第一个只出现一次的字符

题目描述  找出字符串中第一个只出现一次的字符示例输入:asdfasdfo输出:o分析:  用一个数组的每一个位置表示对应的位置。对应的字符位置存放字符出现的次数。统计完之后,遍历输入字符,遇到第一个只出现一次的字符就停止。#include <iostream>#include <string>using namespace std;char FastTimeChar(string& str){ int tmp[26] = {0};

2020-07-05 17:16:57 443

原创 【OJ】洗牌

题目描述  洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一张牌。接着把牌合并起来就可以了。 例如有6张牌,最开始牌的序列是1,2,3,4,5,6。首先分成两组,左手拿着1,2

2020-07-02 17:09:52 339

原创 【OJ】 查找两个字符串a,b中的最长公共子串(动态规划方法)

题目描述查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。OJ链接示例:输入:abcdefghijklmnop abcsafjklmnopqrstuvw输出:jklmnop解析这道题用动态规划求解比较方便,定义MCS[i][j]记录短字符串 s1 前 i 个字符和长字符串 s2 前 j 个字符的最长子串的长度,初始化所有值为 0。当 s1[i-1] = s2[j-1]时MCS[i][j] = MCS[i - 1][j - 1] + 1,这里使用一个额外的值s

2020-07-01 01:05:50 989

原创 【Linux】 进程概念总结

一、操作系统(Operator System)  每一个进程都是运行在操作系统上的,所以在介绍进程概念之前,先来了解操作系统的概念;1、操作系统概念  任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:内核(进程管理,内存管理,文件管理,驱动管理);其他程序(函数库,shell等);   设计OS的目的是为了与硬件交互,管理所有的软硬件资源、为用户程序(应用程序)提供一个良好的执行环境。2、系统调用和库函数概念在开发角度,操作系统对外会表现为一个整

2020-05-19 20:22:29 239

原创 【OJ】 单链表OJ刷题

1、移除链表元素  删除链表中等于给定值 val 的所有节点。OJ链接  示例:  输入: 1->2->6->3->4->5->6, val = 6  输出: 1->2->3->4->5/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct L

2020-05-15 21:52:49 727

原创 【数据结构】 单向链表与双向带头循环链表增删查改实现

一、链表的概念及结构  概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。  实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:单向、双向带头、不带头循环、非循环链表的优缺点:优点:插入删除速度快,不需要像数组与顺序表那样挪数;在内存中离散式存储,内存利用率高;大小没有固定,拓展很灵活;缺点:不能随机访问,必须从第一个开始遍历查找,访问效率低;二、单向链表实现slist.h#i

2020-05-15 16:31:25 268

原创 【OJ】数组相关OJ刷题

1、原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)  给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。  不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。  元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。OJ链接示例:  给定 nums = [3,2,2,3], val = 3,  函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你

2020-05-15 10:19:55 520

原创 【数据结构】 动态顺序表增删查改实现

一、概念及机构  顺序变是一种线性表,首先介绍线性表的概念:  线性表:线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构常见的线性表:顺序表、链表、栈、队列、字符串…  线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。  顺序表:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。 

2020-05-15 01:27:31 375

原创 C语言 简易通讯录C语言实现

一、概述  通讯录的实现其中包括了指针、结构体、动态内存管理、文件的读写操作等知识点,是对这些知识点应用巩固的非常好的例子;  通讯录功能如下:添加联系人删除联系人查找联系人修改联系人显示所有联系人加载联系人保存联系人联系人排序二、代码如下  contact.h#ifndef CONTACT_H#define CONTACT_H#define NAME_MAX 20#define SEX_MAX 10#define TEL_MAX 12#define ADDR_MA

2020-05-15 00:36:14 2074 2

原创 C语言 C语言知识点总结(思维导图版)

一、C语言概述  C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。  当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于

2020-05-11 18:40:21 13474 3

原创 C语言 文件操作总结

一、基本概念  文件分类普通文件:存放在硬盘中的文件;设备文件:屏幕、键盘等特殊文件;文本文件:ASCII文件,每个字节存放一个字符的ASCII码,打开文件看到的是文本信息二进制文件:数据按其在内存中的存储形式原样存放,打开文件看到的是乱码文件缓冲区ANSI C(标准C语言库函数)标准采用“缓冲文件系统”处理数据文件。写文件(设备文件除外),并不会直接写到文件中,会先放在缓...

2020-05-09 00:16:40 251

原创 C语言 结构体内存对齐规则

  在计算结构体类型变量的大小时,就涉及到了内存对齐问题。1. 结构体内存对齐规则  对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值 vs中的默认值为8;Linux中的默认值为4;原则1:数据成员的对齐规则(以最大的类型字节为单位)。  结构体(struct)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存放在offset为该数据成员大小的...

2020-05-05 01:14:51 696

原创 C语言 模拟实现strcpy()、strcat()、strstr()、strchr()、strcmp()、memcpy()、memmove()

1. 模拟实现strcpy()函数说明  strcpy()会将src字符串拷贝带dest所指的地址。返回值  返回参数dst的字符串起始地址。附加说明  如果参数dst所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况, 在编写程序时请特别留意, 或者用strncpy()来取代。//字符串拷贝char* strcpy(char *d...

2020-05-04 20:58:31 324

原创 C语言 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。

代码如下:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,//给20元,可以多少汽水int main(void){ int num = 20; int total ...

2020-05-04 19:42:55 331

原创 C语言 一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次, 找出这两个只出现一次的数字

  这个问题类似于我之前遇到的,一组数据中只有一个数字出现了一次,其他所有数字都是成对出现的,请找出这个数字,参考这个过程解决此问题。  分析:只有两个数字出现了一次其他成对出现,可以首先将这个数组连续异或,得到的结果就是这两个只出现一次数异或后的结果。  目前数组arr{1, 2, 3, 3};3与3异或后为0,因此连续异或的结果就为1与2疑惑后的结果。接下来从左至右移位找为1的二进制位,用...

2019-11-13 21:51:33 347

原创 C语言 在杨氏矩阵中查找数字

一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。分析:数组的特点是从上至下从左至右递增,所以在查找某个数是否存在时首先选一个起始位置,如果当前位置的数比要查找的数大时当前位置列减一,比要查找的数小时当前位置行加一,避免遍历数组元素使时间复杂度为O(N)#define _CRT_SECURE_NO_WARNINGS#include <s...

2019-11-12 10:02:33 240

原创 C语言 字符串翻转(以空格为界限,只翻转单词位置)

字符串翻转,以空格为界限,只翻转单词位置。可以经过以下两个步来实现:将字符串整体先翻转一遍student a am i -> i ma a tneduts再以空格为界限翻转每个单词 i ma a tneduts -> i am a student代码如下:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#...

2019-11-12 00:10:06 729

原创 C语言 一组数据中只有一个数字出现了一次,其他所有数字都是成对出现的,请找出这个数字

分析:数组中只有一个数字出现了一次,其他成对出现,由异或运算的特性我们知道,两个相同的数异或结果为0;所以可以让这组数据连续异或,相同的异或后为0,最终的结果就是只出现一次的那个数字了;代码如下:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <stri...

2019-11-11 23:58:17 231

原创 C语言 将二进制位从左到右翻转并返回

在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2550136832#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h...

2019-11-11 23:47:32 441

原创 C语言 整形提升与整形截断总结

一、整形提升1、整形提升的定义  首先c语言在进行算数运算时总是按整形类型来运算的,char a = 1;char b = 2; 在执行a + b时实际上时int 型的1和2在相加。这其中涉及这样一种转换,表达式中的字符(32位一字节)和短整型(32位2字节)操作数在使用之前被转化为普通整形,这种转换称为整形提升。2、整形提升的意义  表达式的整形运算要在CPU的相应运算器件内执行,CPU...

2019-10-25 15:11:05 676 1

原创 C语言 二进制bit位操作练习(任意数二进制中1的个数、输出二进制数的奇偶位、输出一个整数的每一位、整数m和n的二进制表达中,有多少个位(bit)不同)

函数返回参数二进制中 1 的个数比如: 15 0000 1111 4 个 1#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(void){ int n = 0; int tmp = 0; while (scanf("%d", &n)) {...

2019-10-21 15:13:07 380

原创 C语言 扫雷游戏简易实现

简易实现扫雷游戏,并且第一次扫时不会被炸死,如果当前位置周围九宫格内没有雷时依次检测并展开周围位置。#define ROW 9#define COL 9#define ROWS ROW + 2#define COLS COL + 2#define EASY_COUNT 10ROW、COL为实际棋盘的大小,之所以定义ROWS、COLS是因为在实际布雷时只会不知棋盘中间9 * 9的位...

2019-10-19 22:23:34 181

原创 C语言 三子棋、五子棋与“n子棋”实现

C语言实现三子棋问题,解决诸如此类问题重点在于分析过程,将复杂问题模块化、简单化。使用宏定义 ROW、COL分别表示棋盘的行数与列数;MODE表示玩法(三子棋、五子棋、n子棋)。定义二维数组board[row][col]存放棋子。一、模块分析接下来分以下几个模块实现:1、棋盘打印;2、玩家操作;3、电脑操作;4、胜负判断;1、棋盘打印棋盘样式:初始化棋盘时board[row...

2019-10-11 22:28:24 430

原创 C语言 递归方式实现打印一个整数的每一位

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//递归方式void print(int n){ if (n > 9) { print(n/10); } printf("%d ", n % 10);}...

2019-10-08 12:09:46 254

原创 C语言 递归和非递归分别实现求n的阶乘

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//递归方式int factorial(int n){ if (n == 1) { return 1; } return n * factorial(n - 1);...

2019-10-08 12:07:27 247

原创 C语言 递归和非递归分别实现strlen();

边界条件:’\0’,为达到是字符串地址加1继续调用自身,遇到’\0’时开始返回编程思路如下;my_strlen(abc)1+my_strlen(bc)1+1+my_strlen©1+1+1#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//递归方式int my_str...

2019-10-08 11:51:09 239

原创 C语言 函数 reverse_string(char * string),递归实现将参数字符串中的字符反向排列

函数 reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。边界条件为字符串的左后一位’\0’,当前位不等于’\0’时地址加1继续调用函数自身,直到遇到结束符时从前一位开始依次打印。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h&gt...

2019-10-08 11:43:21 318

原创 C语言 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

当满足边界条件n < 10是递归开始返回,并与当前n的末位相加,计算过程如下图所示:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//递归方式int DigitSum(int n){ if (n < 10...

2019-10-08 11:34:36 411

原创 C语言 编写一个函数实现n^k,使用递归实现

使用k作为边界条件,n * my_pow(n, k - 1)为运算式,直到k递减为1是递归开始返回,依次与前一个n相乘。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//递归方式int my_pow(int n, int ...

2019-10-08 11:15:04 354

原创 C语言 递归和非递归分别实现求第n个斐波那契数

程序调用自身的编程技巧称为递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回...

2019-10-08 11:07:21 283

原创 C语言 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置

创建一个数组,实现函数init()初始化数组、实现empty()清空数组、实现reverse()函数完成数组元素的逆置。要求:自己设计函数的参数,返回值。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>void init(int arr[], int sz){ in...

2019-10-08 10:58:33 595

原创 C语言 函数练习

1.使用函数实现两个数的交换。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void swap(int *p, int *q){ int tmp = *p; *p = *q; *q = tmp;}int mai...

2019-10-08 10:54:02 278

原创 C语言 函数实现打印乘法口诀表,口诀表的行数和列数自己指定

实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入9,输出99口诀表,输入12,输出1212的乘法口诀表。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void multiplication(int n){ int i = 0; int j = 0; fo...

2019-10-08 10:45:25 216

原创 C语言实现大小写转换

如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字或其他字符则不输出。方式一:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ char a =...

2019-09-26 01:41:11 1304

原创 C语言 模拟三次密码输入的场景

最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次,三次均错,则提示退出程序。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int i = 0; cha...

2019-09-26 00:45:12 204

原创 C语言实现折半查找

可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int my_search(int arr[], int sz, int target){ int lef...

2019-09-26 00:38:11 119

原创 C语言实现猜数字游戏

程序生成随机值后,输入1–100之间的数字,程序判断输入的值并提示相比较随机值偏大还是偏小,直至输入值与随机值相同时游戏结束。选项:1、开始游戏2、清屏3、退出游戏#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <time.h>void ...

2019-09-26 00:32:54 782

空空如也

空空如也

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

TA关注的人

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