博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10个操作数的随机四则运算(二)
阅读量:5968 次
发布时间:2019-06-19

本文共 1504 字,大约阅读时间需要 5 分钟。

上一个版本有一点小问题,插括号时考虑的太少了,丢掉了几种情况,所以导致括号的数量稀少,所以我稍微改进了一下,还有,我按照老师的标准把格式也稍微改了一下

下面是我改进后的代码

#include
#include
#include
#include
#include
#include
#include
using namespace std;#define random(x) (rand()%x)int a[100];char s[4]={ '+','-','*','/'};char sym[100];char brackets[100];int num[100];string numToString(int num){ stringstream ss; string as=""; ss<
>as; return as;}void dfs(int s,int e)//使用dfs递归添加括号 { if(!random(4)) //四分之一的概率,不进行任何操作 { return; } if(e-s<=1)//只有一个元素或没有元素,不进行任何操作 { return; } int s1=random(e-s-1)+s;//随机生成插入括号的位置 int e1=random(e-s1)+s1; while(s1
e||s1>=e1||(s1==s&&e1==e))//避免无用括号 { s1=random(e-s-1)+s;e1=random(e-s1)+s1; } if(brackets[s1]==')'||brackets[e1]=='(') { return; } brackets[s1]='('; brackets[e1]=')'; num[s1]++; num[e1]++; dfs(s,s1-1);//插入括号的左边几个元素 dfs(e1+1,e);//括号之间的几个元素 dfs(s1,e1);//括号右边的几个元素 }int main(){ srand(time(NULL)); int T=30,n; set
mySet; string ans; while(T--) { ans=""; n=random(8)+2; memset(brackets,'.',sizeof(brackets)); memset(num,0,sizeof(num)); for(int i=1;i<=n;i++) { a[i] = random(999)+1; sym[i]=s[random(4)]; } dfs(1,n); while(brackets[1]=='('&&num[1]--) { ans+='('; } ans+=numToString(a[1]); for(int i=2;i<=n;i++) { ans+=sym[i]; while(brackets[i]=='('&&num[i]--) { ans+='('; } ans+=numToString(a[i]); while(brackets[i]==')'&&num[i]--) { ans+=')'; } } if(!mySet.count(ans)){ cout<
<

 

 

转载于:https://www.cnblogs.com/yifan2016/p/5267958.html

你可能感兴趣的文章
【★★★★★】提高PHP代码质量的36个技巧
查看>>
如何解决/home/oracle: is a directory报警
查看>>
BaaS API 设计规范
查看>>
bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...
查看>>
iOS开发UI篇—Quartz2D使用(矩阵操作)
查看>>
C++ 构造函数与析构函数
查看>>
定时压缩log日志文件
查看>>
秋无痕 Windows XPSP3 集成安装增强版 V201306
查看>>
IT男成都租房记
查看>>
博为峰JavaEE技术文章 ——MyBatis Provider之@SelectProvider SQL方法
查看>>
Java核心API -- 9(异常)
查看>>
apache 编译报错:undefined reference to `apr_array_clear'
查看>>
图像识别DM8127开发攻略——UBOOT的移植说明
查看>>
ubuntu 下升级docker版本
查看>>
EXSi5.5安装篇
查看>>
开始记录吧
查看>>
windows下用php开发类似百度文库应用需要的工具和问题
查看>>
css模拟select设置高度在ie67下有效(也可作为去除边框)
查看>>
互联网思维
查看>>
ecshop备份数据 ecshop转移数据 ecshop更换主机
查看>>