update dir

This commit is contained in:
ranwenjie
2021-08-02 14:13:21 +08:00
parent 4e81c3cf7d
commit a5adcb1a92
21 changed files with 22 additions and 55 deletions
+1 -3
View File
@@ -93,9 +93,7 @@ a < f(top),把 a push 到 辅助栈中
比如输入的push序列是[1、2、3、4、5] ,那么[4、5、3、2、1]就有可能是一个pop序列
因为可以有如下的push和pop序列:
【push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop】
这样得到的pop序列就是【4、5、3、2、1】。
【push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop】, 这样得到的pop序列就是【4、5、3、2、1】。
但序列【4、3、5、1、2】就不可能是push序列【1、2、3、4、5】的pop序列。
@@ -644,40 +644,6 @@ f(n)= 1 n=1
////////////// 数列 ///////////////
输入a1,a2,...,an,b1,b2,...,bn,
在O(n)的时间,O(1)的空间将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn,
且不需要移动,通过交换完成,只需一个交换空间。
例如,N=9时,第2步执行后,实际上中间位置的两边对称的4个元素基本配对,
只需交换中间的两个元素即可,如下表所示。颜色表示每次要交换的元素,左边向右交换,右边向左交换。
交换过程如下表所示
交换x1,x3;交换x2,x4;再交换中间的x1,x4;交换y1,y2。
给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数
要求下排每个数都是先前上排那十个数在下排出现的次数。
上排的十个数如下:
【0,1,2,3,4,5,6,7,8,9】
初看此题,貌似很难,10分钟过去了,可能有的人,题目都还没看懂。
举一个例子,
数值: 0,1,2,3,4,5,6,7,8,9
分配: 6,2,1,0,0,0,1,0,0,0
0在下排出现了6次,1在下排出现了2次,
2在下排出现了1次,3在下排出现了0次....
以此类推..
0xX0+1xX1+2xX2....+9xX9 = 10;
X0+X1+...+ = 10;
转换成多元一次方程求通解的问题。(Matlib)
给出两个集合A和B,其中集合A={name},
集合B={age、sex、scholarship、address、...},
+17 -17
View File
@@ -7,10 +7,21 @@
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
```
int exist_inmatrix(int *matrix,int rows,int cols,int num);
1 3 5 7
2 5 7 12
4 6 9 23
6 9 23 75
```
```
int exist_inmatrix(int *matrix,int rows,int cols,int target);
```
## 矩阵中最大的二维矩阵
求一个矩阵中最大的二维矩阵(元素和最大).如:
@@ -25,7 +36,10 @@ int exist_inmatrix(int *matrix,int rows,int cols,int num);
5 3
```
要求:(1)写出算法;(2)分析时间复杂度;(3)用C写出关键代码
要求:
(1)写出算法;
(2)分析时间复杂度;
(3)用C写出关键代码
```
int max_sum_submatrix(int *matrix,int rows,int cols,int *tmatrix,int *trows,int tcols)
@@ -125,7 +139,7 @@ void printArry(int *a,int rows,int columns)
int* pArr1=new int[rows];//共存有这么多行指针
for(int i=0;i<rows;i++)
pArr1[i]=i*(columns+1);
while(1)
{
int min=arr[pArr1[0]];
@@ -151,17 +165,3 @@ void printArry(int *a,int rows,int columns)
## n支队伍比赛的名次
n支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系,存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j的队伍中更强的一支。
所以w[i][j]=i 或者j,现在给出它们的出场顺序,并存储在数组order[n]中,
比如order[n] = {4,3,5,8,1......},那么第一轮比赛就是 4对3, 5对8。.......
胜者晋级,败者淘汰,同一轮淘汰的所有队伍排名不再细分,即可以随便排,下一轮由上一轮的胜者按照顺序,再依次两两比,比如可能是4对5,直至出现第一名
编程实现,给出二维数组w,一维数组order 和 用于输出比赛名次的数组result[n],求出result。
+3 -1
View File
@@ -1,6 +1,8 @@
#include <stdlib.h>
#include <stdio.h>
#define PrintInt(expr) printf("%s : %d\n",#expr,(expr))
#define PrintInt(expr) printf("%s : %d\n",#expr,(expr))
int main()
{
int y = 100;
@@ -2,6 +2,7 @@
#include "stdio.h"
//打印和为n的2个值
void print_continuous_sequence_sum(int n){// n=1,2
int small=1;