s1

西工大机试 计算表达式的值

a 夏天 提交于 2020-03-11 13:05:04
题目描述:输入行数,再在每行输入一个表达式,得出结果 输入实例: 3 1+1 2.2/3 1+2*3 输出示例: 2.0 0.7 7.0 思路:把中缀表达式转后缀表达式,边转换边计算。设置一个数字栈s1,一个符号栈s2,遍历字符串s,数字直接进栈,在计算数学算式时是先乘除后加减,同优先级从左到右按顺序计算。所以遇到'+'、'-',s2里的符号都要在'+'、'-'之前算,把s2里符号依次出栈,不断取s1的两个数字计算结果并入栈s1,再把符号入栈。遇到'*'、'\',把s2里的'*'、'\'出栈,计算结果,入栈符号。最后处理符号栈剩余符号。 #include <iostream> #include <string> #include <stack> using namespace std; double get_number(string &s,int &i) { string number; for(;i<s.length();i++) { if((s[i]>='0'&&s[i]<='9')||s[i]=='.'){ number.insert(number.end(),s[i]); } else { i--; break; } } return stod(number); } void fuhao(stack<double> &s1,stack<char> &s2) {

栈实现中缀转后缀,并用逆波兰方式计算

眉间皱痕 提交于 2020-03-10 15:07:57
stack.js class Stack { constructor ( ) { // dataStore 保存所有数据 this . dataStore = [ ] ; // top 指示可以添加数据的“位置” this . top = 0 ; } // 当然定义栈自己的push 方法,并让顶指针加一 push ( elem ) { this . dataStore [ this . top ++ ] = elem ; } // 返回最顶部的值 peek ( ) { return this . dataStore [ this . top - 1 ] } // 出栈一个元素,即最顶部的值。并让指针减一,注意是先用后减 pop ( ) { return this . dataStore [ -- this . top ] } // 因为无论添加值、访问值、还是出栈值,都是根据this.top // 就像数组清空,直接令length=0 clear ( ) { this . top = 0 } length ( ) { return this . top ; } } 中缀转后缀 const Stack = require ( './stack.js' ) /** * 传入一个字符串类型的计算式 * @param {*} op */ function converted ( op )

17字符串函数

安稳与你 提交于 2020-03-10 11:11:35
1.计算字符数、字符串长度的函数 char_length(S) #计算字符串的字符数 length(S) #计算字符串的占用内存的字节数 2.合并字符串函数 concat(S1,S2...) #拼接字符串,如果后面存在NULL,则返回NULL concat_ws (X,S1,S2...) #连接符连接字符串,并以X为连接符,null不影响。 3.替换字符串函数 insert (S1,X,LEN,S2) #在S1中,以第X个字符串为起点向后LEN长度的字符串,替换为S2 replace (S,S1,S2) #在字符串S中,将所有的S1替换为S2 示例: SELECT insert("ABCDEFG",2,3,"123") 返回的结果为:A123EFG 4.截取字符串的函数 LEFT(S,N) #从左至右截取N个字符串 RIGHT(S,N) #从右至左截取N个字符串 5.重复生成字符串函数 repeat(S,N) #将S重复显示N遍 6.大小写转换函数 lower(X) / LCASE(X) #全部转换为小写 upper(X) / UCASE(X) #全部转换为大写 7.填充字符串的函数 LPAD(S1,LEN,S2) #将S1填充为长度为LEN的字符串,不足的以S2在左边填充 RPAD(S1,LEN,S2) #在右边填充 示例: SELECT LPAD("ABCD",10,"%")

基本数据类型面试题收集

房东的猫 提交于 2020-03-08 10:21:42
short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错?** short s1=1;s1=s1+1 这编译时就报错了;因为short,char,byte 在运算时会自动转成int类型; i+1表达式的类型为int,将int赋值给short,会报出丢失精度错误 我们可以 强转 解决这个问题 short i = 1 ; i = ( short ) ( i + 1 ) ; short s1=1;s1+=1; 没有错;+=是Java语言规定的运算符,Java会对它进行特殊处理—强制类型转化 byte a = 127; a+=5; System.out.println(a); 请问输出结果是什么? 这个画图比较好解释 128表示-128;而132则表示-124 java 的 Integer 和 int 有什么区别? int 是基本数据类型,Interger是int的封装类,提供了一些对整数的操作方法; int 修饰 参数,或者是成员变量时,默认值是0;Integer 默认是null; java 中 3*0.1 == 0.3 将会返回什么?true 还是 false? false; 浮点数不能完全精确表现出来,一般会损失精度 java 中 float f = 3.4; 是否正确? 错误,3.4 是double,赋值给float会丢失精度,除非强转

内置函数以及闭包

旧街凉风 提交于 2020-03-04 04:06:47
今日内容 匿名函数:一句话函数,比较简单的函数。 此函数不是没有名字,他有名字,他的名字就是你给其设置的变量。 lambda是定义匿名函数的关键字,相当于函数的def。 lambda后面直接加形参,形参加多少都可以,只要用逗号隔开就行了。 返回值在冒号之后设置,返回值和正常函数一样,可以是任意数据类型。 匿名函数不管多复杂,只能写一行,且逻辑结束后直接返回数据。 def func(a,b): return a + b #构建匿名函数 func1 = lambda a,b:a+b print(fun(1,2)) ​ 接收一个可切片的数据,返回索引为0与2的对应的元素(元祖形成)。 func2 = lambda a:(a[0],a[2]) print(func([22,33,44,55]))#(22, 44) 写匿名函数:接收两个int参数,将较大的数据返回。 lambda a,b:a if a>b else b 内置函数 python 提供了68个内置函数。 eval 剥去字符串的外衣运算里面的代码,有返回值。 s1 = '1+3' print(s1) print(eval(s1)) s = '{"name":"alex"}' print(s,type(s)) print(eval(s)) exec 与eval几乎一样,代码流。 msg = ''' for i in range(10

问题 1545: [蓝桥杯][算法提高VIP]现代诗如蚯蚓(C++)

六眼飞鱼酱① 提交于 2020-03-03 15:18:02
题目描述 现代诗如蚯蚓 断成好几截都不会死 字符串断成好几截 有可能完全一样 请编写程序 输入字符串 输出该字符串最多能断成多少截完全一样的子串 样例说明 最多能断成四个”abc”,也就是abc重复四遍便是原串 同时也能断成两个”abcabc” 最坏情况是断成一个原串”abcabcabcabc” 数据规模和约定 字符串长度< =1000 输入 一行,一个字符串 输出 一行,一个正整数表示该字符串最多能断成的截数 样例输入 abcabcabcabc 样例输出 4 本题要求是求出一个字符串能断成多少相同的子字符串。 (1)首先,我们取长度为i的子字符串,子字符串取的最长长度为输入字符串的1/2,因为若有相同的串,最少断成的截数为2,子字符串最长长度也就是输入字符串的1/2。 (2)设置一个字符串s1用来存储长度为1,2,3,…,len/2的子字符串。 (3)再设置一个字符串s2用来存储s1之后的相同长度的子字符串,若与s1比较全部相同,那么输出s.length()/i,也就是字符串的长度除以断成子字符串的长度,得出的结果即为断成的截数。 # include <bits/stdc++.h> using namespace std ; int main ( ) { string s ; string s1 ; string s2 ; cin >> s ; for ( int i = 1 ;

字串统计-map

℡╲_俬逩灬. 提交于 2020-03-03 10:07:03
问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。 输入格式   第一行一个数字L。   第二行是字符串S。   L大于0,且不超过S的长度。 输出格式   一行,题目要求的字符串。 输入样例1:   4   bbaabbaaaaa 输出样例1:   bbaa 输入样例2:   2   bbaabbaaaaa 输出样例2:   aa 数据规模和约定   n<=60   S中所有字符都是小写英文字母 import java . util . HashMap ; import java . util . Map ; import java . util . Scanner ; public class map { public static void main ( String [ ] args ) { Scanner sc = new Scanner ( System . in ) ; int L = sc . nextInt ( ) ; String str = sc . next ( ) ; String max = "" ; int count = 0 ; Map < String , Integer > map = new HashMap < > (

1053 Path of Equal Weight (30分)

回眸只為那壹抹淺笑 提交于 2020-03-01 19:30:07
1. 题目 2. 思路 定义结构体, 并且使用下标作为序号 struct node{ string weight; vector<int> children; }nodes[101]; 读取数据,并且排序children,方便输出 使用先序遍历,处理数据 3. 注意点 权重的值很大,用字符串处理,要自己写加法和比较函数 4. 代码 #include<cstdio> #include<algorithm> #include<vector> #include<string> using namespace std; struct node{ string weight; vector<int> children; }nodes[101]; string add(string s1, string s2){ char a, b; if(s1.length() > s2.length()){ s2.resize(s1.length(), '0'); }else{ s1.resize(s2.length(), '0'); } int c = 0; string result = ""; int i = 0; for(i=0;i<s1.length();i++){ a = s1[i]-'0'; b = s2[i]-'0'; char res = a+b+c; c = res>9?1:0;

NOIP 双栈排序(贪心算法)

跟風遠走 提交于 2020-02-26 22:38:58
题目描述 Tom最近在研究一个有趣的排序问题。如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序。 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1不为空,将S1栈顶元素弹出至输出序列 操作c 如果输入序列不为空,将第一个元素压入栈S2 操作d 如果栈S2不为空,将S2栈顶元素弹出至输出序列 如果一个1~n的排列P可以通过一系列操作使得输出序列为1,2,…,(n-1),n,Tom就称P是一个“可双栈排序排列”。例如(1,3,2,4)就是一个“可双栈排序序列”,而(2,3,4,1)不是。下图描述了一个将(1,3,2,4)排序的操作序列:<a,c,c,b,a,d,d,b> 当然,这样的操作序列有可能有几个,对于上例(1,3,2,4),<a,c,c,b,a,d,d,b>是另外一个可行的操作序列。Tom希望知道其中字典序最小的操作序列是什么。 【输入】 输入文件twostack.in的第一行是一个整数n。 第二行有n个用空格隔开的正整数,构成一个1~n的排列。 【输出】 输出文件twostack.out共一行,如果输入的排列不是“可双栈排序排列”,输出数字0;否则输出字典序最小的操作序列,每两个操作之间用空格隔开,行尾没有空格。 【输入输出样例1】 输入: 4 1 3 2 4 输出: a b a a b b a b 思路 能弹出,则弹出

MATLAB入门学习笔记6

馋奶兔 提交于 2020-02-22 18:22:54
教程06目录 脚本的打开方式 函数(function) 与脚本(script)的区别 设置函数 不需要返回值和输入值 不需要返回值,需要输入值 需要返回值和输入值 函数套函数 示例1-求某数有多少个约数 示例2-判断某数是否是质数 函数和脚本的综合 脚本的打开方式 一种是打开保存的脚本然后点击运行; 另一种是直接在命令窗口保存的脚本的名称,然后回车 函数(function) 与脚本(script)的区别 区别1——有无括号 sum、mod等所有函数,输入时都带一个括号(),如sum(v)、mod(8,3);而要运行Script时,输入脚本名然后回车就可以了 区别2——有无head和end 设置函数 inputarg表示输入值,同样是需要的时候进行输入 不需要返回值和输入值 保存function后在命令窗口输入函数名称(如下图 untitled() )即得到函数运算的结果。 不需要返回值,需要输入值 一个参数 不是在function代码中设定,而是命令窗格中设定 两个参数 a+(a+1)+(a+2)+…+b 需要返回值和输入值 情形 : 比如v1 = [6 7 8 9],v2 = [1 3 5 7 9],求v1内的加上v2内的所有数之和。可以用MATLAB系统里的函数来做:对v1内求和放在变量s1里s1 = sum(v1),对V2内求和放在变量s2里s2 =sum(v2)