首页 > 其他分享 >【对拍】生成合法的中缀代数表达式

【对拍】生成合法的中缀代数表达式

时间:2023-10-10 19:22:44浏览次数:38  
标签:ch cont 中缀 int -- && 代数 表达式 define

#include<bits/stdc++.h>
using namespace std;
const int maxn=1000005;
#define int long long
#define rep(i,j,k) for(int i=(j);i<=(k);++i)
#define dow(i,j,k) for(int i=(j);i>=(k);--i)
#define pr pair
#define pb push_back
#define mkp make_pair
#define fi first
#define se second
int t,n,m,k;
inline int max(int a,int b) {
	return a>b?a:b;
}
inline int min(int a,int b) {
	return a>b?b:a;
}
inline int read() {
	int x=0;
	char ch=getchar();
	while(1) {
		if (ch>='A'&&ch<='F') {
			x=ch-'A'+10;
			return x;
		} else if(ch>='0'&&ch<='9') {
			x=ch-48;
			return x;
		}
		ch=getchar();
	}
}
int gp(int x,int y) {
//	if(y==x)
//	return x;
	int t;
	while((t=rand())<=0)
		srand(time(0));
	return t%(y-x+1)+x;
}
int gp() {
	int t;
	while((t=rand())<=0)
		srand(time(0));
	return t;
}
char ope[]= {'+','-','*','/','^'};
signed main() {
	ios::sync_with_stdio(false),cin.tie(NULL);
	freopen("data.in","w",stdout);
	srand(time(0));
	t=gp(1,20);
	cout<<t<<endl;
	while(t--) {
		n=gp(1,7);
		int cont=0;
		rep(i,1,n) {
			while(cont>=0&&rand()>20000) {
				cont++;
				cout<<"(";
			}
			cout<<(char)('A'+i-1);
			while(cont>0&&rand()>20000) {
				cont--;
				cout<<")";
			}
			if(i!=n)
				cout<<ope[gp()%5];
		}
		while(cont>0) {
			cont--;
			cout<<")";
		}
		cout<<'#'<<endl;
	}


	return 0;
}

标签:ch,cont,中缀,int,--,&&,代数,表达式,define
From: https://www.cnblogs.com/WXk-k/p/17755507.html

相关文章

  • 动态构建表达式
    问题来源:前端文本输入框以分隔符(比如"aa|bb|cc")传进来的字符串,针对一个字段做的查询条件;由于该字符串分隔符数量不确定,因此需要动态构建出来;旨在实现例如以下效果:varusers=await_context.Users.Where(s=>s.Name.Contains("aa")||s.Name.Contains("bb")||s.Name.Conta......
  • 【C++ Primer】表达式
    一、基础1、左值和右值:当一个对象被用作右值的时候,用的是对象的值(内容);当对象用作左值的时候,用的是对象的身份(在内存中的位置)。   需要用到左值的地方有:赋值运算符需要一个左值作为其左侧运算对象,得到的结果也是左值。取地址符作用与左值对象,返回的指针是右值。解引用和下标运算......
  • 【webapp】JSP 标签的分类(动作标签、指令标签、表达式标签)
    SP(JavaServerPages)标签是用于在JSP页面中插入特定功能和逻辑的标记。根据其功能和用途,JSP标签可以分为以下三类:动作标签(ActionTags):动作标签用于执行特定的操作或调用服务器端的功能。它们通常以<jsp:开头,并以>结束。动作标签可以使用内置的JSP动作或自定义的标......
  • 多线程,Lambda表达式
    函数式接口的定义: 简单来说就是,一个接口只定义了一个方法,那么可以用Lambda表达式来创建接口的对象。 Lambda表达式省略了类名和方法名  可以直接一个括号一个箭头任何直接写核心代码可以根据()里面的参数来选择具体是哪个方法  还能够再简化掉参数类型和括号。花......
  • 数据解析之re正则表达式
    数据解析之re正则表达式1.正则基础1.1为什么使用正则需求判断一个字符串是否是手机号解决编写一个函数,给函数一个字符串,如果是手机号则返回True,否则返回False代码defisPhone(phone):#长度为11#全部都是数字字符#以1开头passifisPhone("138......
  • 正则表达式(最近接触正则,留个备份)
     很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。一、校验数字的表达式1数字:^[0-9]*$2n位的数字:^\d{n}$3至......
  • Lambda表达式
    Lambda表达式前言lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。lambda表达式的语法lambda表达式是一个代码块,以及必须传入代码的变量规范。lambda表达式的形式:(参数列表);箭头:->;{表达式};(Stringfirst,Stringsecond)->{first.length()-second.l......
  • 正则表达式应用场景
    数据验证数据验证应该是正则表达式最常见的场景了,经常用于用户的输入是否符合所需的条件。数据验证可确保输入或导入的数据准确、一致,并符合预定义的规则。验证手机号:constphoneNumber="13712345678";constregex=/^1[3-9]\d{9}$/;console.log("手机号格式正确:",regex.......
  • 给定3个整数a、b、c,计算表达式(a+b)/c的值,/是整除运算。[无解]
    题目4-2:给定3个整数a、b、c,计算表达式(a+b)/c的值,/是整除运算。  给定3个整数a、b、c,计算表达式(a+b)/c的值,/是整除运算。输入格式:输入仅一行,包括三个整数a、b、c,数与数之间以一个空格分开。(-10,000<a,b,c<10,000,c不等于0)输出格式:输出一行,即表达式的值。map......
  • xpath 处理自增的id manage11 使用表达式 //*[starts-with(@id, "manage") and
      //*[starts-with(@id,"manage")andnumber(substring-after(@id,"manage"))=11] 1.使用starts-with()函数选择以"manage"开头的所有元素,2.使用substring-after()函数获取ID中"manage"后面的部分。3.使用number()函数将这部分转换为数字,4.使用逻辑运算符and来判断......