青少年编程知识记录 codecoming

【数据结构】栈—表达式括号匹配

【题目描述】

假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。

【输入描述】

一行数据,即表达式。

【输出描述】

一行,即“YES” 或“NO”。

【样例输入】

2*(x+y)/(1-x)@

【样例输出】

YES

作者:亿万年的星光 分类:C++知识 浏览:

【数据结构】栈的基本操作

0.前言上一篇中简单介绍了栈的定义,这一篇中介绍栈的基本用法,包含压栈,出栈,判断栈空,判断栈中元素个数等。下面进行详细介绍1.基本用法本文介绍的栈的主要操作,使用栈之前加入<stack>头文件。基本用法如下:s.push(item);       //将item压入栈顶   s.pop();        &nb
作者:亿万年的星光 分类:C++知识 浏览:

【数据结构】栈(Stack)的介绍

栈是只能在某一端插入和删除的特殊线性表。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表(LIFO表)。一、栈的定义二、分类静态栈:使用数组动态栈:链表标准库STL中的stack三、算法入栈:push出栈:pop判断栈空:empty栈大小:size访问栈顶:top进栈(PUSH)算法①若top >= n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则进行②)②t
作者:亿万年的星光 分类:C++知识 浏览:

【贪心】最大子矩阵

【题目描述】

已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1X1)子矩阵。

比如,如下4 x 4的矩阵

0    -2    -7    0

9    2    -6    2

-4    1    4    1

-1    8    0    -2

的最大子矩阵是

9    2

-4    1

-1    8

这个子矩阵的大小是15。

【输入描述】

输入是一个N x NN(0<N<=100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数...)给出矩阵中的N2个整数,整数之间由空白字符分隔(空格或者空行)。已知矩阵中整数的范围都在[-127,127]。



【输出描述】

最大子矩阵的大小

【样例输入】

4   0 -2 -7  0   9  2 -6  2  -4  1 -4  1  -1  8  0 -2

【样例输出】

15

标签: 贪心

作者:亿万年的星光 分类:算法 浏览:

第十四届全国青少年信息学奥林匹克联赛初赛试题(NOIP2008年普及组初赛C++试题及参考答案)

第十四届全国青少年信息学奥林匹克联赛初赛试题                   ( 普及组  C++语言  二小时完成 ) 一、 单项选择题 (共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。1.微型计算机中,控制器的基本功能是(   )。A. 控制机器各个部

NOIP2013年普及组初赛题目及答案分析

一、单项选择题1. 一个 32 位整型变量占用( A )个字节。 A. 4    B. 8      C. 32      D. 128 【分析】32位整型,1Byte=8位, 32/8=4,答案选A2.二进制数 11.01 在十进制下是(  A  )。 A. 3.25    B. 4.125    C. 6.25    D. 11.12
作者:亿万年的星光 分类:C++知识 浏览:

【贪心】----(字典序)最大整数

【题目描述】

      设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。

       例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213; 

       又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613

【输入】

       两行,第一行n。表示有n个数。

       第二行是 n个数。

【输出】

连接成的多位数

【输入样例】



3  13 312 343



【输出样例】



34331213
作者:亿万年的星光 分类:算法 浏览:

数组的不确定长度输入

0.前言我们在学习数组的时候一般都会告诉你数组的长度,然后for循环去遍历。但是有一类问题是没有n的,也就是没有告诉长度的。1.方法第一种:(数组)#include<iostream> #include<cstdio> using namespace std; int main() { int a[100]; int t=0; int n; while(scanf("%d
作者:亿万年的星光 分类:C++知识 浏览:

【贪心】 导弹拦截

【题目描述】

某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:

虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。

某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。

所以一套系统有可能不能拦截所有的导弹。

输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。

计算要拦截所有导弹最小需要配备多少套这种导弹拦截系统。

【输入】

n颗依次飞来的高度(1≤n≤1000)。

【输出】

要拦截所有导弹最小配备的系统数k。

【输入样例】

389 207 155 300 299 170 158 65

【输出样例】

2

【提示】

输入:导弹高度: 4  3  2

输出:导弹拦截系统k=1



作者:亿万年的星光 分类:算法 浏览:

【贪心】区间覆盖

【题目描述】

给定一个长度为m的区间,再给出n条线段的起点和终点(本题考虑闭区间),求最少使用多少线段可以将整个区间完全覆盖。

【输入】

第一行是区间长度m。第二行是n,表示有n个可选区间。后面跟着n行数据,每行包含两个值,第一个是当前区间的起始端点值,第二个是当前区间的结束端点值。

【输出】

能覆盖m的最少的区间个数

【输入样例1】

8  6  2 6  1 4  3 6  3 7  6 8  2 4  3 5



【输出样例1】



3



作者:亿万年的星光 分类:算法 浏览: