自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CoTNet的keras实现

网上找了很久没找到CotLayer 的 keras实现自己实现了一个论文和源代码大家百度一下就可以了,别的博客都有把resnet的3x3卷积换成cotlayer即可class key_embed(tf.keras.layers.Layer): def __init__(self,dim):#dim=512, kernel_size=3 super(key_embed, self).__init__() # self.dim = dim #

2021-10-16 20:02:35 515 3

原创 最大字段和 动态规划

求数组a的最大字段和定义一个数组bb[i]表示截止到第i个数的最大字段和那么我们知道如果b[i-1]<=0,b[i]的值应该为a[i]如果b[i-1]>0,b[i]的值应该是b[i-1]+a[i]int maxsum(int n, int *a){ int sum = 0, b = 0; for (int i = 1; i <= n; i++) { if (b > 0) b += a[i]; else b = a[i]; if (b > su

2021-01-08 10:27:54 208

原创 最长公共子序列 动态规划

void lcslength(int m, int n, char *x, char *y, int **c, int **b){ int i, j; for (i = 1; i <= m; i++) //c[i][j]记录序列xi和yj的最长公共子序列长度 c[i][0] = 0; for (j = 1; j <= n; j++) c[0][j] = 0; for (i = 1; i <= m; i++) { for (j = 1;

2021-01-08 09:57:59 122

原创 矩阵连乘 动态规划

void martixchain(int *p, int n, int **m, int **s){ for (int i = 1; i <= n; i++) //m[i][j]表示A[i:j]所需要的最小数乘次数,自己乘自己为0 m[i][i] = 0; for (int r = 1; r <= n; r++) //控制i和j的距离 { for (int i = 1; i <=n-r:i++ ) j = i + r;

2021-01-08 09:08:05 171

原创 Hanoi塔问题

hanoi(n,a,b,c)表示将塔座a的自下而上,由大到小叠放在一起的n个圆盘依移动规则移到b,摆放顺序不变,且c作为辅助void hanoi(intn, int a, int b, int c){ if (n > 0) { hanoi(n - 1, a, c, b); move(a, b); hanoi(n - 1, c, b, a); }}...

2021-01-07 12:28:07 234 1

原创 整数划分问题 递归

将整数n划分,划分时最大可用的数为mint q(int n, int m) { if ((n < 1 || (m < 1))) return 0; if ((n == 1) || (m == 1)) return 1; if (n < m) return q(n, n); if (n == m) return q(n, m - 1) + q(n - m, m); return q(n, m - 1) + q(n - m, m); /

2021-01-07 12:17:15 81

原创 全排列问题 递归

设计一个Perm函数,产生list[k:m]的所有全排列Perm(list[], int k, int m) //求list[k:m]的全排列{ if (k == m) { for (int i = 0; i < m; i++) cout << list[i]; cout << endl; } else { for (int i = k; i < m; i++) { swap(list[i],

2021-01-07 11:02:56 279

原创 图的m着色问题 回溯法

Ok(int t) //邻接矩阵存储图{ for (int j = 1; j <= n; j++) if (a[t][j] == 1 && x[t] == x[j]) return false; return true;}backtrack(int t){ if (t > n) sum++; else { for (int i = 1; i <= m; i++)

2021-01-06 17:06:34 152

原创 0-1背包问题的回溯算法

整体思路是当左儿子节点是可行结点,搜索进入左子树。右儿子结点有可能包含最优解时才搜索进入右子树。如何判断是否可能包含最优解?用背包问题的解法,把各物品的单位质量价值排序然后装入背包,求出的不是0-1问题的有效解,但是这个方法求出的值一定是最大的type c; //背包容量int n; //物品数type *w; //物品重量数组type *p; //物品价值数组type cw; //当前重量ty

2021-01-06 15:54:09 357

原创 n后问题 回溯法

问题不做具体描述,读者可自行查找题目要求我们逐行添加棋子,且加入的棋子不能和之前所有添加过的棋子在一列或者在一条斜线上。void Place(int t) //判断把第t行的皇后放在第i列是否符合条件{ for (int j = 1; j <= t; j + ) { if (abs(t - j) == abs(x[j] - x[t]) || x[j] == x[t]) //是否为同一列或同一斜线上 return false; } return true;}

2021-01-06 15:00:31 151

原创 符号三角形问题

在这里问题不具体描述,读者可自行去搜索题目要求总体思路是对第一行的第i个符号进行修改然后判断在第一行有i个符号的情况下“+”或者“-”是否满足条件:counter <= half) && ( t*(t+1)/2 - counter <= half 即符号统计未超过半数且另一种符号也未超过半数。若符合条件,则可继续拓展第一行的第i+1个符号,由于我们设置了约束函数,所以当i等于n的时候,也就是我们访问到了叶节点的时候,这个叶节点一定是符合题意的。void backtrace(i

2021-01-06 14:07:50 196

原创 AddressSanitizer: heap-buffer-overflow on address

用c做leetcode的时候经常出现这种报错,原因是数组访问越界char a = (char)malloc(sizeof(char)n);这一步申请空间错了,应该是(sizeof(char)(n+1));最后空间存’\0’...

2020-04-27 15:54:24 263

原创 深度优先遍历和广度优先遍历判断有向图中是否有s到t的路径

这里的有向图我们用邻接表存储深度优先遍历我们用的是递归思想,这里我们设一个数组visited表示节点是否被访问,以s为起点,访问链表s的第一个未被访问的节点,然后再对这个节点做深度优先遍历,递归结束后,如果visited[t]==1,那么就有s到t的路径。#define MAXSIZE 100int visited[MAXSIZE];void DFS(Graph p,int s,int t...

2020-04-19 15:30:54 1896

原创 递归算法求n个数字的全排列

首先我们把n个数字用数组存放,数字存放顺序任意我们设一个递归函数为 void qpl(int a[ ],int k,int n)(k的范围是0~n-1),其含义为,求a[0]到a[k]全排列,a[k+1]到a[n-1]不变的序列那么void qpl(int a[],int k-1,int n)含义为求a[0]到a[k-1]全排列,a[k]到a[n-1]不变的序列我们举一个例子:1 2 3 ...

2020-04-16 20:34:39 5729

原创 递归算法解约瑟夫环

约瑟夫环问题介绍:17世纪的法国数学家加斯帕在《数目的游戏问题》中讲了这样一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。这里我们简化一下问题,假设共10个人,每数到4就将第四个人...

2020-04-14 16:04:49 662

原创 输入边创建无向图的邻接表

输入边来创建无向图的邻接表,首先用一个n*2的数组edge来存放各条边,初始化头节点,然后把各个头节点对应的边用单链表连接#include <stdio.h>#include <stdlib.h>#define MAX_VERTEX_NUM 100#define MAXSIZE 100int edge[MAXSIZE][2];typedef struct Arc...

2020-04-12 01:04:19 1128

原创 递归算法求森林中第一颗树的深度

用递归算法把复杂问题分解成相同的子问题。对每一个节点来说,先求它的第一个孩子的深度,再分别求该孩子兄弟的深度,进行比较。int depthtree(CSTree &T){if(!T) return 0;CSTree p;p=T->fc;int depth=depthtree(p);while(p){p=p->nb;if(depth<depthtree...

2020-04-09 17:28:04 460

原创 非递归算法中序遍历森林

对森林进行中序遍历=所对应二叉树中序遍历=树后序遍历void zxbl(CSTree &T){SqStack s;InitStack(s);//初始化空栈,此处代码省略CSTree p;p=T;while(p||s.top!=s.base){if(p){*s.top++=p;p=p->fc;}else{p=*--s.top;printf("%c",...

2020-04-05 20:29:53 382

原创 二叉链表存储,判断二叉树是否为完全二叉树

先序遍历构造一个二叉树,当输入为‘#’时T=NULL构造队列 访问节点 把左右子树入队 当节点值为NULL时 判断队列后面的值是否全为NULL 如果是则为完全二叉树void create(BiTree &T){//构造二叉树 char ch; scanf("%c",&ch) if(ch=='#') T==NULL; else { T=(Node*)mall...

2020-04-05 12:55:12 3298

原创 交换二叉树各节点子树

用递归算法交换二叉树各节点子树BiTree Exchange(BiTree &T){BiTree p;if(T==NULL)||(T->lchild==NULL&&T->lchild==NULL))return T;p=T->lchild;T->lchild=T->rchild;T->rchild=p;if(T->...

2020-04-04 10:44:52 325

原创 用循环队列对二叉树进行层次遍历并求最大层数

用循环队列对二叉树进行层次遍历并求最大层数#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100#define D 20typedef struct node{ int data; struct node *lchild,*rchild;}Node,*BiTree;typedef struct{...

2020-03-31 13:35:23 327

原创 用循环队列求斐波那契数列

已知K阶斐波那契数列定义为:f0 = 0, f1 = 0, … , fk-2 = 0, fk-1 = 1;fn = fn-1 + fn-2 + … + fn-k , n = k , k + 1, …利用循环队列编写求k阶斐波那契数列中前n+1项(f0, f1, f2,…, fn)的算法,要求满足:fn<=max,并且fn+1>max,其中max为某个约定的常数。(注意:本题所用...

2020-03-31 10:39:25 2688

原创 用循环队列对二叉树进行层次遍历

void ss(BiTree T){BiTree a[MAXSIZE],q;//定义循环队列int front,rear;front=-1;rear=-1;rear++;a[rear]=T;while(front!=rear){front=(front+1)%MAXSIZE;q=a[front];printf("%d ",q->data);if(q->lchil...

2020-03-29 09:56:47 393

空空如也

空空如也

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

TA关注的人

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