博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1950 Dessert(dfs枚举,模拟运算过程)
阅读量:6964 次
发布时间:2019-06-27

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

/*      这个代码运行的时间长主要是因为每次枚举之后都要重新计算一下和的值!     如果要快的话,应该在dfs,也就是枚举的过程中计算出前边的数值(这种方法见第二个代码),直到最后,这样不必每一次枚举都要从头再算一遍值!  */  1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 7 char ch[20]; 8 char sign[3]={
'+', '-', '.'}; 9 int n, cnt;10 int num[20];11 int signNum[200];12 13 void dfs(int u){14 if(u==n){15 if(signNum['+']==n-1 || signNum['+']+signNum['.']==n-1 || signNum['.']==n-1 || signNum['-']==n-1) return;16 for(int i=1; i
9)22 s=s*100+(++i);23 else s=s*10+(++i);24 }25 if(s>10000) return ;//非得加上这句话....然后就幸运的过了!26 num[v]=s;27 --i;28 }29 }30 num[n]=n;31 int s=num[1];32 for(int i=1; i

 

/*     清晰的思路,清晰的代码.....T^T!  */  1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 char sign[3]={
'+', '-', '.'}; 7 int n, cnt; 8 char ch[20]; 9 int dir[2]={
10, 100};10 11 12 //pre记录的是'+' 或者是 '-'的左边的运算值, nowI记录的是其右边的值 13 void dfs(char chPre, int pre, int nowI, int cur){14 if(cur==n){15 int s=-1;16 if(chPre=='+')17 s=pre+(nowI*dir[cur/10]+cur);18 else if(chPre=='-')19 s=pre-(nowI*dir[cur/10]+cur);20 //如果chPre=='.' 说明整个式子中不存在运算符号+或者-, 那最终的结果一定不是0 21 if(s==0){22 ++cnt;23 if(cnt<=20){24 for(int i=1; i

 

转载地址:http://bjwsl.baihongyu.com/

你可能感兴趣的文章
Swing控件
查看>>
快速JavaEE轻量级框架&公用业务模块 设计&实现 6.1 - DAO测试
查看>>
文本特征提取算法实现
查看>>
这个qq的域名【c.gj.qq.com】是做什么的?chrome浏览器,访问什么网站都有这个请求...
查看>>
C++中的类型转换
查看>>
大数据引发的变革与企业面临的挑战
查看>>
HttpServlet详解
查看>>
无线网络
查看>>
架构设计:生产者/消费者模式 第4页:注意事项
查看>>
1233
查看>>
php写入文件权限失败 file_put_contents: failed to open stream: Permission denied
查看>>
MarMoible的 java4android视频
查看>>
我想象的创业团队
查看>>
MySQL单列索引和组合索引的区别介绍
查看>>
python文件处理
查看>>
java并发之CountDownLatch
查看>>
PHP等比例缩放图片
查看>>
spring中MessageSource的配置使用方法3--ResourceBundleMessa
查看>>
Python在同一位置刷新显示进度信息
查看>>
解决获取微信用户信息 48001错误
查看>>