2021-03-13

STL简单应用

一、string:
1.头文件:#include
2.常用操作:s.empty(),s为空则返回true,否则返回false
3.S.size()返回s的字符个数 s1=s2为赋值 s1+s2为连接 s1+=s2为追加。
4.比较:两个string相等则意味着它们的长度相同,所含字符相同,大小关系依照字典序并且区分大小写。
5.可用下标运算符来访问string 对象中所指位置的字符。下标从0到s.size()-1

二、栈stack:
1.先进后出,定义类型为 stacks;
2.常用操作:top()返回栈顶元素
3.s.push(a)压入元素a; pop()移除栈顶元素。

三、队列queue:
1.先进先出 定义类型为 queueq;
2 .常用操作:back()返回最后一个元素3.front()返回下一个元素 pop()移除元素

四、排序sort:
1.头文件#include
2.普通:sort<begin,end>为升序
3.自定义sort<begin,end,cmp>
bool cmp(int a,int b){return a>b;}
解释:如果a>b则返回true并且不交换,否则返回false并且交换位置

五、万能头文件: #include<bits/stdc++.h>

六、unique去重之后并不是把重复的元素藏在了最后, 而是,直接将排序后的数组最后的元素不变, 只将不重复的元素排在数组最前边
unique(a,a+n)返回的是从去重后(不重复数列中)最后一个元素的尾地址,减去地址a就是数列的长度

贪心算法

解释:在资料上找到的通俗的解释就是,求最优解的方法。它按照某种最优策略,将复杂的问题层层分解成子问题。并由子问题的最优解反过来回溯出整个问题的最优解。
当然在用贪心这种方法时,我们要先考虑两个问题。1该题是否合适用贪心策略2如何选择标准。

在上课的时候,老师用了一个通俗易懂点例子来作解释:就像去买东西,如果现金支付的话,找钱问题。如果需找钱76元的话,他不会全找你一块的,他会按照最优解,先给你五十的再给你二十的,这样层层求解,最后可以得出用最少的张数来找出所需的金额。

例子1:如装载问题,在不超过轮船载重的前提下,尽可能多的往船上装货物。那这样我们可以想到,先要放最轻的,然后依次放。因为我们要以放更多的货物为目的。
解法:先按重量排序,简单升序直接用sort函数就好。还有要注意sort函数区间是前开后闭。现在问题是,排序后,数组下标会改变,那么怎么才能将原标号输出呢?这里就要运用struct。我们可以用这个结构将重量和原下标号分开放置。这样按照重量排序后,我们仍可以找到它的原下标号。

struct load {
int index; //集装箱编号
int w; //集装箱重量
}box[1001];这个就是将体重和标号分别放置。

while (scanf("%d%d", &c, &n)!=EOF)
{
  memset(box, 0, sizeof(box));
  memset(x, 0, sizeof(x));
  for (int i=1; i<=n; i++)
  {
    scanf("%d", &box[i].w);
    box[i].index = i;
  }
  //按集装箱的重量升序排序
  stable_sort(box, box+n+1, cmp);
  if (box[1].w>c) {
    printf(“No answer!\n”);
    continue;
  }
/这一步是将数组初始值赋值为零然后输入重量,EOF是文件结束标志,把x全初始为零是很重要的一步,因为它要区分出已经装上车和没装上车的货物/

int i;
for (i=1; i<=n && box[i].w<=c; i++)
{ x[box[i].index] = 1;
 c -= box[i].w;}
  //输出装载的集装箱数量
  printf("%d\n", i-1);
  //输出装载的集装箱编号
  for (i=1; i<=n; i++)
    if (x[i]) printf("%d “, i);
  printf(”\n");
}/这一步就可以看出x[box[i].index] = 1;就是装上船的将其变为1,这样最后可以将原下标输出/

最后最后最后总结,重要的点是1排序2用结构分别放置重量和标号3定义个x数组,将所有的都初始为零,当装上船一个就将其变为1,最后输出这些为1的标号i即为原标号。

(这是第一次发表这种总结类的东西,也算是一次尝试。经过这次,我才知道了其他博主那些简单整洁的博客需要投入多少精力。我刚刚接触到这个领域,慢慢发现了自己有多么渺小。之前好像也没有养成好的学习习惯,每次都是为了考试而学习,并没有把那些知识真正学到脑袋里。这是我大学以来的第一次学习态度上的转变,我会继续努力,争取每次都有进步,将知识真正的理解内化为自己熟练掌握的东西。因为第一次写,所以语言表达,知识的牵引都不到位,如有错误,望指正)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值