A
B
B的意思就是不用处理特殊情况
D
画图理解
D
中缀表达式转成后缀表达式:
数据栈 遇到数字就入栈 得到结果也入栈
操作符栈
遇到操作符 如果该操作符的优先级高于栈顶就入栈,否则取数据栈栈顶两个数据进行计算。
没有操作符入栈了就开始出栈操作符找数据进行计算
当操作符栈吗为空时,数据栈的栈顶元素就是表达式的答案。
B
队头是47,还能放13个,然后从0开始再放37个。但是根据答案来看,它是从1开始放的
D
第h层的节点个数=2^(h-1) 前h层的节点个数2^h-1
第七层总共有127个,但是因为第六层中有9个叶节点,所以第7层会少18个节点
127-18=109
B
哈夫曼树的构造:
1.从数据里面选两个最小的节点A,B,以他们的和构成父节点,A,B成为其子节点。然后将父节点的值放入数据。
2.重复第一步
带权路径长度:
到数据中的节点需要的边长数*节点的数据大小。
图示如下: 6*2+2*3+5*3+8*2+11*2=71
C
删除操作:交换12和8 _size--;
第一次比较: 选出来 15 和 10 里面较小的那个
第二次比较:12 和 第一次比较的结果进行比较
第三次比较 12和16进行比较 结束
C
哈希冲突可以通过精巧的哈希函数尽可能减少,但不可能完全消失。
C
迷宫问题_牛客题霸_牛客网
#include
#include
#include
#include
using namespace std;
pair Prev[20][20];//用于保存从哪里来的
int main()
{int n,m;cin>>n>>m;vector>map(n,vector(m,0));vector>already(n,vector(m,-1));for(int i=0;i>map[i][j];}queue>way;way.push(make_pair(0,0));//path.push_back(make_pair(0,0));while(!way.empty()){pairtop=way.front();way.pop();already[top.first][top.second]=1;int arr[4][2]={{1,0},{-1,0},{0,1},{0,-1}};bool flag=false;for(int i=0;i<4;i++){int nx=top.first+arr[i][0];int ny=top.second+arr[i][1];if(nx>=n || nx<0 ||ny >=m || ny<0) continue;if(map[nx][ny]==0 && already[nx][ny]==-1){way.push(make_pair(nx,ny));already[nx][ny]=1;Prev[nx][ny]=top;}}}int x=n-1,y=m-1;vector>path;path.push_back(make_pair(n-1,m-1));while(x||y){auto t=Prev[x][y];path.push_back(t);x=t.first,y=t.second;}reverse(path.begin(),path.end());for(auto& e:path){cout<<"("<
年终奖_牛客题霸_牛客网
class Bonus {
public:int getMost(vector > board) {int row=board.size();int col=board[0].size();vector> dp(row,vector(col,0));dp[0][0]=board[0][0];for(int i=0;i|