您的位置:首页 > 科技 > 能源 > 网页设计的工作流程_上海网站快速排名_绍兴seo优化_nba最快的绝杀

网页设计的工作流程_上海网站快速排名_绍兴seo优化_nba最快的绝杀

2025/3/31 18:01:19 来源:https://blog.csdn.net/m0_64014167/article/details/146476318  浏览:    关键词:网页设计的工作流程_上海网站快速排名_绍兴seo优化_nba最快的绝杀
网页设计的工作流程_上海网站快速排名_绍兴seo优化_nba最快的绝杀

括号的匹配:

if((s[i]==')' && now=='(') || (s[i]==']' && now=='[')){

#include <bits/stdc++.h>using namespace std;int main() {char s[300];scanf("%s",&s);int i;int len = strlen(s);stack <char> st;for (i = 0; i < len; i++){if(!st.empty()){char now = st.top();if((s[i]==')' && now=='(') || (s[i]==']' && now=='[')){st.pop();}else{st.push(s[i]);}}else{st.push(s[i]);}}if (!st.empty()){printf("NO!");}else{printf("GOOD!");}return 0;
}

 哈夫曼树(果堆排序):

有n堆果子,看看如何分类

输入包括两行:第一行是一个整数n(1<=n<=10000),表示果子的种类个数。

第二行包含了n个整数,用空格分隔,第i个整数表示整数ai(1<=ai<=20000)是第i堆果子的数目。

eg:输入 3

                1 2 9

        输出:15

解法1:

如果数量比较少,可以用sort函数来排序,每次将前面两位加完之后继续排,继续加,直到数组只有一个值。

解法2:

#include <bits/stdc++.h>
using namespace std;struct node{int x;node(int a) {x = a;} //构造函数方便赋值
};//定义优先队列的排序:
bool operator < (const node& a,const node& b){return a.x > b.x;
}int main(){priority_queue <node> q;int n,x;cin >> n;for (int i = 0; i < n; i++){cin >> x;q.push(x);}int ans = 0;while (q.size() > 1){node num1 = q.top();q.pop();node num2 = q.top();q.pop();ans += (num1.x + num2.x);q.push(node{num1.x + num2.x});}cout << ans;return 0;}

其中的q.push(node{num1.x + num2.x}) 是前面把num1 出队和num2出队之前,把他们的值保存下来再相加

二叉树的建立和遍历:

按照先序先输入 二叉树的节点,没有的按0表示。

再输出 第一行是先序 第二行是中序 第三行是后序变量 第四输出叶子结点

#include <bits/stdc++.h>
using namespace std;typedef struct node{ //注意typedef不能忽略char data;struct node *lchild,*rchild;
}*BitTree;
//先序遍历的方式创建二叉树:
void CreatBitTree(BitTree &T){char c;cin >> c;if(c == '0'){T=NULL;}else{T = new node;T->data = c;CreatBitTree(T->lchild);CreatBitTree(T->rchild);}
}//将二叉树按照先序输出:
void PreOrderTraverse(BitTree T){if(T != NULL){cout << T->data << ' ';PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}
}//将二叉树按照中序输出:
void InOrderTraverse(BitTree T){if (T != NULL){InOrderTraverse(T->lchild);cout << T->data << ' ';InOrderTraverse(T->rchild);}
}//将二叉树按照后序输出:
void PostOrderTraverse(BitTree T){if (T != NULL){PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);cout << T->data << ' ';}}//二叉树的叶子节点数:
int Leaf(BitTree T){if(T == NULL) return 0;if(T->rchild == NULL && T->lchild == NULL) return 1;return Leaf(T->lchild) + Leaf(T->rchild);
}//二叉树的深度:
int Deepth(BitTree T){if (T == NULL) return 0;int x = Deepth(T->lchild);int y = Deepth(T->rchild);return max(x,y) + 1;
}int main() {BitTree T;CreatBitTree(T);PreOrderTraverse(T); cout << endl;InOrderTraverse(T); cout << endl;PostOrderTraverse(T); cout << endl;cout << Leaf(T) << endl;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com