自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CUDA使用共享内存实现矩阵相乘

【代码】CUDA使用共享内存实现矩阵相乘。

2023-08-17 17:00:26 319

原创 利用GPU和CUDA实现矩阵转置

【代码】利用GPU和CUDA实现矩阵转置。

2023-08-16 11:22:58 216

原创 利用GPU和CUDA实现矩阵乘法

【代码】利用GPU和CUDA进行矩阵乘法。

2023-08-16 11:01:42 220

原创 基于WSL2、Ubuntu和VS Code的CUDA平台运行C语言程序

执行该输出文件,与执行Linux中Shell脚本的方式相同。执行结果中,第一条输出结果为CPU输出,后面10条输出结果为GPU中的10个线程输出。在Visual Studio Code中打开该文件,并进行代码的编写。WSL中跳转到程序文件目录下。使用nvcc命令生成输出文件。

2023-07-29 20:23:27 1139

原创 c++函数的分文件编写

【代码】c++函数的分文件编写。

2023-06-18 15:04:25 94

原创 计算机网络—数据交换方式

网络层的主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。主要功能:路由选择与分组转发(最佳路径)。异构网络互联。拥塞控制:若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。解决方法:开环控制(静)、闭环控制(动)。一、数据交换方式1.电路交换优点:1. 通信时延小。2. 有序传输。3. 没有冲突。4. 实时性强。缺点:1. 建立连接时间长。2. 线路独占使线路使用效率低。3. 灵活性差。4. 无差错控

2021-11-29 10:13:47 1240

原创 LeetCode算法刷题(2)— 枚举

一、最值算法//时间复杂度:O(n)//空间复杂度:O(1)class Solution {public: int maxProduct(vector<int>& nums) { int maxn=-1,maxnn=-1; for(int i=0; i < nums.size(); i++){ if(nums[i] > maxn){ maxnn=maxn;

2021-10-24 15:51:53 216

原创 计算机网络—数据链路层

一、数据链路层的基本概念数据链路层最基本的服务是将源自计算机网络层的数据可靠的传输到相邻节点的目标计算机的网络层(通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报)。结点:主机、路由器。链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有限链路和无线链路。数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。帧:链路层的协议数据单元,封装网络层数据报。二、数据链路层的功能概述数据链路层在物理层提供

2021-10-21 15:50:49 2806

原创 LeetCode算法刷题计划(1)— 基础50题

LeetCode算法刷题计划(1)— 基础50题 下面按照算法类型分类一、malloc//时间复杂度:O(n)//空间复杂度:O(1)class Solution {public: vector<int> getConcatenation(vector<int>& nums) { int n=nums.size(); for(int i=0;i<n;i++){ nums.pu

2021-10-05 18:03:29 329

原创 LeetCode—分数到小数

class Solution {public: string fractionToDecimal(int numerator, int denoinator) { string ans_z="",ans_x=""; unordered_map<int,int>mp; long long Lnumerator=(long long )numerator; long long Ldenoinator=(long long..

2021-10-03 09:11:02 134

原创 数字转换为十六进制数(位运算)

class Solution {public: string toHex(int num) { if(num==0){ return "0"; } string s=""; for(int i=7;i>=0;i--){ int tmp=(num>>(4*i))&15; if(tmp>0||s.length()>0){ .

2021-10-02 21:40:14 259

原创 LeetCode—矩形面积

class Solution {public: int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) { int are1=(ax2-ax1)*(ay2-ay1),are2=(bx2-bx1)*(by2-by1); int shape_width=min(ax2,bx2)-max(ax1,bx1); int shape_he..

2021-09-30 21:42:31 91

原创 超级洗衣机(贪心)

/*时间复杂度:O(n)空间复杂度:O(1)*/class Solution {public: int findMinMoves(vector<int>& machines) { int sum=accumulate(machines.begin(),machines.end(),0); int n=machines.size(); if(sum%n!=0){ return ..

2021-09-29 23:25:21 94

原创 路径总和 III(树中递归套递归)

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} ..

2021-09-28 13:48:44 95

原创 两个字符串的删除操作(动态规划—最长公共子序列)

时间复杂度:O(nm)空间复杂度:O(nm)class Solution {public: int minDistance(string word1, string word2) { int maxlen[555][555]; int n=word1.length(),m=word2.length(); for(int i=0;i<=m;i++) maxlen[0][i]=0; for(int .

2021-09-25 09:02:46 96

原创 计算机网络—物理层

物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的主要任务:确定与传输媒体接口有关的一些特性机械特性:引线数目、引脚数量电气特性:电压范围、速率、距离功能特性:某一电平表示何种意义规程特性:各条物理线路的工作规程和时序关系数据通信基础知识:数据通信相关术语:数据: 发送信息的实体,通常是有意义的符号序列。信号: 数据的 电气/电磁 的表现,是数据在传输过程中的存在形式。有数字信号和连续信号两种。    

2021-09-23 11:39:01 308

原创 最长递增子序列(动态规划、贪心+二分)

动态规划:时间复杂度:O(n^2)空间复杂度:O(n)class Solution {public: int lengthOfLIS(vector<int>& nums) { int n=nums.size(); if(n==0) return 0; int dp[n]; for(int i=0;i<n;i++){ dp[i]=1; .

2021-09-20 16:39:58 420

原创 栈的应用—前、中、后缀表达式

中缀表达式:运算符在两个操作数中间前缀表达式:运算符在两个操作数前面(两个操作数的左右顺序不能颠倒)后缀表达式:运算符在两个操作数后面中缀表达式转后缀表达式的手算方法:客观来说两种计算结果都正确,但是计算机算法计算的结果为前者,所以依据“左优先”原则得到的结果可以和计算机算法计算的结果相同,推荐使用左边计算方法即依据左优先原则。左优先原则计算得到的后缀表达式中计算符从左到右的顺序和依据左优先原则的中缀表达式中的计算符的计算顺序相同。 后缀表达式的计算:手算:注意两个操作数的左右顺序.

2021-09-19 13:43:07 795

原创 红黑树(B-R树)

红黑树是一棵特殊的二叉查找树,它在每个节点增加了一个存储位记录节点的颜色,可以是red,也可以是black,通过任意一条从根到叶子简单路径上颜色的约束,红黑树保证最长路径不超过最短路径的二倍,因而近似平衡。它的统计性能要好于平衡二叉树(AVL树),插入、删除、查找的最坏时间复杂度都为 O(logn)。性质(规则):结点是红色或黑色根节点是黑色每个叶子节点(NULL结点)都是黑色的空结点每个红色节点的两个子结点都是黑色(从每个叶子到根的所有路径上不能有两个连续的红色结点)从任一结点到其每个叶子的

2021-09-17 15:36:12 241

原创 寻找峰值(二分+贪心)

时间复杂度:O(logn)空间复杂度:O(1)class Solution {public: int findPeakElement(vector<int>& nums) { int left=0,right=nums.size()-1; //如果上升则右侧必有峰 while(left<right){ int mid=(left+right)/2; nums[mid].

2021-09-15 11:48:57 70

原创 动态规划—01背包

复杂度分析:n为物品数量 m为背包容量时间复杂度:O(n*m)空间复杂度:O(n*m)实现代码:#include<iostream>using namespace std;//01背包 int f[55][55]; //记录每个状态的最优解int w[5]; //每个物品的重量int v[5]; //每个物品的价值 //背包总容量为8 int main(){ for(int i=1;i<5;i++){ //输入每个物品的重量 cin>>w

2021-09-13 18:57:40 119 2

原创 回旋镖的数量(枚举+哈希)

时间复杂度:O(n^2)空间复杂度:O(n)class Solution {public: int numberOfBoomerangs(vector<vector<int>>& points) { int n=points.size(),ans=0; if(n<=1) return 0; for(auto point:points){ .

2021-09-13 16:43:13 68

原创 不含连续1的非负整数(二进制+dfs)

class Solution {public: int b_n; int count; void dfs(int cur){ if(cur>b_n) return; count++; if(cur&1){ dfs(cur<<1); }else{ dfs(cur<<1); .

2021-09-12 11:05:45 73

原创 有效的括号字符串(栈)

时间复杂度:O(n)空间复杂度:O(n)class Solution {public: bool checkValidString(string s) { stack<int>sc,st; if(s=="") return true; for(int i=0;i<s.length();i++){ if(s[i]=='('){ sc.p.

2021-09-12 10:49:50 62

原创 找到需要补充粉笔的学生编号(约瑟夫环+前缀和+二分)

约瑟夫环:时间复杂度:O(n)空间复杂度:O(1)class Solution {public: int chalkReplacer(vector<int>& chalk, int k) { int n=chalk.size(),i=-1; long long sum=0; for(int j=0;j<n;j++) sum+=chalk[j]; k%=sum; ..

2021-09-10 09:05:37 108

原创 JavaWeb—JSP

JSP概念:Java Serve Pages:java服务器端页面。可以理解为:一个特殊的的页面,其中既可以指定定义HTML标签,又可以定义java代码。JSP用来简化书写。代码: <body> <% System.out.println("hello jsp"); //java代码,会打印到控制台上 %> <h1> hi jsp! </h1> <!-- HTML代码 会展示在浏览器上 --&gt

2021-09-09 20:17:54 69

原创 JavaWeb—Servlet

什么是Servlet?Servlet是JavaEE规范之一,规范就是接。Servlet是JavaWeb三大组件之一,三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。Servlet是运行在服务器上的一个小型java小程序,他可以接收客户端发送过来的请求,并响应数据给客户端。手动实现Servlet程序编写一个类去实现Servlet接口。package test;import java.io.IOException;import javax.servle

2021-09-09 16:53:59 60

原创 IPO(堆+贪心)

时间复杂度:O( (n+k)logn )空间复杂度:O(n)class Solution {public: int findMaximizedCapital(int k, int w, vector<int>& profits, vector<int>& capital) { pair<int,int>pairs; int count=0; vector<pair<int,i..

2021-09-08 21:33:33 51

原创 c/c++文件操作小项目—朗读工具

通过文件写入操作将脚本写进一个vbs文件中,运行代码后会生成一个vbs文件,该文件用于朗读操作。实现代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<iostream>#include<string.h>#include<stdlib.h>using namespace std;//朗读工具int main() { while(1){ //多次输入 char us

2021-09-04 16:28:24 343

原创 c/c++文件操作

文件的基本操作:1.打开文件 File * fopen(char *fileURL,char *Mode); 文件路径 文件格式 1.声明一个文件指针,接收fopen返回的文件指针 File *fp; 2.fopen打开文件 fp=fopen("1.txt","读写方式"); 注意点:如果fp==NULL,说明打开文件失败 路径: 相对路径:同一个文件夹下 绝对路径:明确的路径 读写方式: w:write 写 r:read 读

2021-09-04 14:36:54 108

原创 排序算法—归并排序

算法稳定性:稳定复杂度分析:空间复杂度:O(n)时间复杂度:O(n*logn)实现代码:#include<iostream>using namespace std;//归并排序int nums[155];int tmp[155]; //辅助数组,暂时存放要归并的序列//归并void Merge(int* nums, int left, int mid, int right) { for (int i = left; i <= right;i++) {

2021-09-01 10:32:03 66

原创 堆的插入和删除

实现代码:#include<iostream>using namespace std;//堆的插入和删除//调整小根堆void HeapAdjust(int* nums, int idx, int n) { nums[0] = nums[idx]; //将要调整子树的根节点暂存在nums[0]位置处 for (int i = 2 * idx;i <= n;i *= 2) { if (i<n && nums[i]>nums[i + 1])

2021-08-31 22:24:33 164

原创 排序算法—堆排序

算法稳定性:不稳定复杂度分析:空间复杂度:O(1)时间复杂度:O(n*logn)实现代码:#include<iostream>using namespace std;//堆排序(大根堆,从小到大排序)//调整堆void HeapAdjust(int *nums,int x,int n) { nums[0] = nums[x]; //nums[0]暂存子树的根节点 for (int i = 2 * x;i <= n;i *= 2) { if (i &lt

2021-08-31 21:34:15 49

原创 航班预订统计(差分算法)

数据量大,用暴力方法解决必定超时。//差分算法class Solution {public: vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) { vector<int>ans(n); //差分数组,每个元素存储ans[i]-ans[i]的值 for(auto booking:bookings){ ..

2021-08-31 19:49:31 178

原创 排序算法—简单选择排序

算法稳定性:不稳定复杂度分析:空间复杂度:O(1)时间复杂度:O(n^2)实现代码:#include<iostream>using namespace std;//简单选择排序void SelectSort(int *nums,int n){ for(int i=0;i<n-1;i++){ int minn=i; for(int j=i+1;j<n;j++){ //每次找到i下标之后最小的元素的下标,然后交换下标为i处的元素和i之后最小元素的值

2021-08-31 16:16:10 102

原创 排序算法—快速排序

算法稳定性:不稳定复杂度分析:最好空间复杂度:O(logn)最坏空间复杂度:O(n)最好时间复杂度:O(n*logn)平均时间复杂度:O(n*logn)最坏时间复杂度(全部有序):O(n^2)实现代码:#include<iostream>using namespace std;//快速排序//用待排序序列的第一个元素将待排序序列划分为左右两个部分int part(int *nums,int low,int high){ int tmp=nums[low]; /

2021-08-31 14:03:56 59

原创 排序算法—冒泡排序

算法稳定性:稳定复杂度分析:空间复杂度:O(1)最好时间复杂度(全部有序):O(n)平均时间复杂度:O(n^2)最坏时间复杂度(全部逆序):O(n^2)实现代码:#include<iostream>using namespace std;//冒泡排序int nums[155]; //冒泡排序 void BubbleSort(int *nums,int n){ for(int i=1;i<n;i++){ //找到第i大的元素 bool flag=fa

2021-08-30 21:27:02 47

原创 排序算法—希尔排序

算法稳定性:不稳定复杂度分析:空间复杂度:O(1)最好时间复杂度:未知平均时间复杂度:O(n^1.5)最坏时间复杂度:O(n^2)实现代码 :#include<iostream>using namespace std;//希尔排序 int nums[155];//希尔排序 void ShellSort(int *nums,int n){ int j; for(int d=n/2;d>=1;d/=2){ //步长 for(int i=d+1;

2021-08-30 18:53:20 51

原创 插入排序优化—折半插入排序

时间复杂度和插入排序相比并没有质的飞跃,只是比较的次数少了一些。算法稳定性:稳定复杂度分析:- 空间复杂度:O(1)- 最好时间复杂度(全部有序):O(n)- 平均时间复杂度:O(n^2)- 最坏时间复杂度(全部逆序):O(n^2)实现代码:#include<iostream>using namespace std;//折半插入排序int nums[155];//折半查找int BinFind(int *nums,int low,int high,int x){

2021-08-30 13:36:18 268

原创 排序算法—插入排序

算法稳定性:稳定复杂度分析:- 空间复杂度:O(1)- 最好时间复杂度(全部有序):O(n)- 平均时间复杂度:O(n^2)- 最坏时间复杂度(全部逆序):O(n^2)实现代码:#include<iostream>using namespace std;//插入排序int nums[155];//不带哨兵的插入排序 void InsertSort(int *nums,int n){ int tmp,j; for(int i=1;i<n;i++){

2021-08-30 13:18:12 60

空空如也

空空如也

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

TA关注的人

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