- 博客(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
598
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
259
原创 最长公共子序列 动态规划
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
165
原创 矩阵连乘 动态规划
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
213
原创 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
279
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
130
原创 全排列问题 递归
设计一个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
330
原创 图的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
196
原创 0-1背包问题的回溯算法
整体思路是当左儿子节点是可行结点,搜索进入左子树。右儿子结点有可能包含最优解时才搜索进入右子树。如何判断是否可能包含最优解?用背包问题的解法,把各物品的单位质量价值排序然后装入背包,求出的不是0-1问题的有效解,但是这个方法求出的值一定是最大的type c; //背包容量int n; //物品数type *w; //物品重量数组type *p; //物品价值数组type cw; //当前重量ty
2021-01-06 15:54:09
393
原创 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
182
原创 符号三角形问题
在这里问题不具体描述,读者可自行去搜索题目要求总体思路是对第一行的第i个符号进行修改然后判断在第一行有i个符号的情况下“+”或者“-”是否满足条件:counter <= half) && ( t*(t+1)/2 - counter <= half 即符号统计未超过半数且另一种符号也未超过半数。若符合条件,则可继续拓展第一行的第i+1个符号,由于我们设置了约束函数,所以当i等于n的时候,也就是我们访问到了叶节点的时候,这个叶节点一定是符合题意的。void backtrace(i
2021-01-06 14:07:50
238
原创 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
357
原创 深度优先遍历和广度优先遍历判断有向图中是否有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
1978
原创 递归算法求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
6091
原创 递归算法解约瑟夫环
约瑟夫环问题介绍:17世纪的法国数学家加斯帕在《数目的游戏问题》中讲了这样一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。这里我们简化一下问题,假设共10个人,每数到4就将第四个人...
2020-04-14 16:04:49
716
原创 输入边创建无向图的邻接表
输入边来创建无向图的邻接表,首先用一个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
1196
原创 递归算法求森林中第一颗树的深度
用递归算法把复杂问题分解成相同的子问题。对每一个节点来说,先求它的第一个孩子的深度,再分别求该孩子兄弟的深度,进行比较。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
501
原创 非递归算法中序遍历森林
对森林进行中序遍历=所对应二叉树中序遍历=树后序遍历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
438
原创 二叉链表存储,判断二叉树是否为完全二叉树
先序遍历构造一个二叉树,当输入为‘#’时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
3435
原创 交换二叉树各节点子树
用递归算法交换二叉树各节点子树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
380
原创 用循环队列对二叉树进行层次遍历并求最大层数
用循环队列对二叉树进行层次遍历并求最大层数#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
374
原创 用循环队列求斐波那契数列
已知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
2895
原创 用循环队列对二叉树进行层次遍历
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
449
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人