博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO Zero Sum
阅读量:4980 次
发布时间:2019-06-12

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

想练练自己的深搜,倔强的不愿意for循环来搞。写了五个参数的dfs最后ac掉了。最先我写的是两个参数的,因为没看清题意以为求的是解的总数,后来才知道要打印出所有解。参数一直加,直到加了五个参数。我的dfs很烂。但慢慢写总会好的。

View Code
#include 
#include
#include
#include
#include
#include
#include
using namespace std;int n,ans,sum;char s[100];void dfs(int cur,int sum,int len,int fa,int last){ s[len]=cur+'0'; if(cur==n) { if(sum==0) printf("%s\n",s); return; } for(int i=0;i<3;i++) { if(i==0) { len++; s[len]=' '; if(fa==-1) dfs(cur+1,sum*10+cur+1,len+1,fa,last);// else if(fa==0)// dfs(cur+1,sum*10+cur+1,len+1,fa); else if(fa==1) dfs(cur+1,sum-last+(last*10+cur+1),len+1,fa,last*10+cur+1); else if(fa==2) dfs(cur+1,sum+last-(last*10+cur+1),len+1,fa,last*10+cur+1); len--; } if(i==1) { len++; s[len]='+'; dfs(cur+1,sum+cur+1,len+1,i,cur+1); len--; } if(i==2) { len++; s[len]='-'; dfs(cur+1,sum-cur-1,len+1,i,cur+1); len--; } } len--;}int main(){ while(~scanf("%d",&n)) { ans=sum=0; memset(s,0,sizeof(s)); dfs(1,1,0,-1,0); } return 0;}

相信大家有更容易的做法,请多多指教。。

转载于:https://www.cnblogs.com/RainingDays/archive/2013/03/05/2944026.html

你可能感兴趣的文章
linux 用户与用户组
查看>>
数据结构之排序查找算法
查看>>
运用PCA进行降维的好处
查看>>
matlab
查看>>
《构建之法》阅读笔记02
查看>>
如何利用python将.doc文件转换为.docx文件
查看>>
Ubuntu 14.04 定时任务
查看>>
切片对象
查看>>
[置顶] Android入门教程------导入现有Android工程
查看>>
《Entity Framework 6 Recipes》中文翻译系列 (40) ------ 第七章 使用对象服务之从跟踪器中获取实体与从命令行生成模型(想解决EF第一次查询慢的,请阅读)...
查看>>
Intro to Filtering with Network Monitor 3.0
查看>>
问卷调查
查看>>
Contest Record
查看>>
使用仓库管理器——Sonatype Nexus的九大理由
查看>>
51Nod 1066 - Bash游戏
查看>>
servlet session管理的四种方式--一 url重写
查看>>
术语解析之SAX
查看>>
PMSM 高性能电压补偿器
查看>>
linux中的文件解压命令
查看>>
运维与自动化运维发展方向
查看>>