【数据结构】栈—表达式括号匹配
【题目描述】
假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。
【输入描述】
一行数据,即表达式。
【输出描述】
一行,即“YES” 或“NO”。
【样例输入】
2*(x+y)/(1-x)@
【样例输出】
YES
【题目描述】
假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。
【输入描述】
一行数据,即表达式。
【输出描述】
一行,即“YES” 或“NO”。
【样例输入】
2*(x+y)/(1-x)@
【样例输出】
YES
数轴上有n个闭区间[ai, bi],取尽量少的点,使得每个区间内都至少有一个点。(不同区间内含的点可以是同一个,1<=n<=10000,1<=ai<=bi<=10^9)。求最少点的个数。
n
n项工作的开始与结束时间
最多参与的工作项数
【输入样例1】
4 3 13 6 20 4 14 1 10
1
【输入样例2】
3 4 7 6 8 11 20
2
int gcd(int a,int b) { if(a%b==0) return b; else return gcd(b,a%b); }
int divisor (int a, int b) //自定义函数求两数的最大公约数 { int temp;//定义整型变量 temp=(a>b)?b:a;//采种条件运算表达式求出两个数中的最小值 while(temp>0) { if(a%temp==0&&b%temp==0)//只要找到一个数能同时被a,b所整除,则中止循环 break; temp--;//如不满足if条件则变量自减,直到能被a,b所整除 } return (temp);//返回满足条件的数到主调函数处 }
int gcd2(int m,int n) { int i=0,temp,x; while(m%2==0&&n%2==0)//判断m和n能被多少个2整除 { m/=2; n/=2; i+=1; } if(m<n)//m保存大的值 { temp=m; m=n; n=temp; } while(x) { x=m-n; m=(n>x)?n:x; n=(n<x)?n:x; if(n==(m-n)) break; } if(i==0) return n; else return (int) pow(2,i)*n; }
4.其他方法
int gcd(int a,int b) { int c; while(b) { c=a%b; a=b;b=c; } return a; }