博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO 2.3 ;零的数列
阅读量:6250 次
发布时间:2019-06-22

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

题目:https://www.luogu.org/problemnew/show/P1473

一开始上手dfs没什么思路,硬刚了一会儿才刚出来我真是太菜了orz

dfs(pos,cur,v,c),用cur表示当前和,v表示上一位

为什么要表示上一位的和呢?因为如果有“ ” ,是要由上一位×10再加当前位得到这个数

cal表示前一位的运算符,也是同理

代码:

#include
#include
#include
#include
using namespace std;inline int read(){ int ans = 0,op = 1; char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-') op = -1; ch = getchar(); } while(ch >= '0' && ch <= '9') { (ans *= 10) += ch - '0'; ch = getchar(); } return ans * op;}char ans[10];int n;int a[10];void dfs(int pos,int cur,int v,char cal){ if(pos == n + 1) { if(cal == '-') cur -= v; if(cal == '+') cur += v; if(cur) return; cout << 1; for(int i = 1;i <= n;i++) cout << ans[i] << a[i]; cout << endl; return; } ans[pos] = ' '; dfs(pos + 1,cur,v * 10 + a[pos],cal); ans[pos] = '+'; if(cal == '+') dfs(pos + 1,cur + v,a[pos],ans[pos]); else dfs(pos + 1,cur - v,a[pos],ans[pos]); ans[pos] = '-'; if(cal == '+') dfs(pos + 1,cur + v,a[pos],ans[pos]); else dfs(pos + 1,cur - v,a[pos],ans[pos]); } int main(){ n = read(); n--; for(int i = 1;i <= n;i++) a[i] = i + 1; dfs(1,0,1,'+'); return 0;}

 

转载于:https://www.cnblogs.com/LM-LBG/p/9984768.html

你可能感兴趣的文章
Mahout算法集
查看>>
高阶HMM中文分词
查看>>
sql注入在线检測(sqlmapapi)
查看>>
Python2 连接MySQL
查看>>
模型浏览器【Model Browser】【EF基础系列6】
查看>>
typeof操作符 返回值
查看>>
【云计算】CloudFoundry参考资料
查看>>
理解并解决GBK转UTF-8奇数中文乱码(转)
查看>>
分析需求场景对产品设计的意义
查看>>
[javaSE] GUI(事件监听机制)
查看>>
Electron 不完全快速手册
查看>>
[osx] intellij-idea快捷键大全
查看>>
Mac下安装MySQL(Mac 10.12)
查看>>
css 温故而知新 select-option 文字方向居右
查看>>
HTTP协议基础
查看>>
IIS发布的网站常见的问题汇总
查看>>
40岁应该学会的是面对和取舍
查看>>
UVA 12493 Stars (欧拉函数--求1~n与n互质的个数)
查看>>
PHP高级教程-异常处理(Exception)
查看>>
2017年第六届数学中国数学建模国际赛(小美赛)比赛心得
查看>>