这里设置一个flag来记录发生了什么情况,0表示error,1表示正常,2表示拒绝。

逻辑主要如下:

如果和大于当前res并且小于target,那么更新值,记录所有分割情况,标记flag为1,接受

如果和等于当前res,标记flag为2,即拒绝

如果dfs的过程中没有改变flag,即flag为0,那么说明没有比target小的值,error

代码如下所示:

#include<cstdio>
#include<queue>
#include<stack>
#include<map>
#include<list>
#include<vector>
#include<string>
#include<iostream>
#include<ctime>
#include <cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
using namespace std;
#define ll long long
ll t;
char s[7];
int len, lent;
int res;
int flag;
int target[7];
int ans[7];void DFS(int i, int time, ll sum){if (sum>t){return;}if (i>=len){if (sum>res){flag=1;lent=time;res=sum;for (int j = 0; j < time; ++j) {ans[j]=target[j];}} else if (sum==res){flag=2;}}ll tmp=0;for (int j = i; j < len; ++j) {tmp = tmp*10+s[j]-'0';target[time]=tmp;DFS(j+1, time+1,sum+tmp);}
}int main() {while (~scanf("%d %s",&t,s)){if (t==0 && s[0]=='0'){break;}lent=res=flag=0;len= strlen(s);
//        cout<<t<<","<<s<<endl;DFS(0, 0, 0);if (!flag){printf("error\n");}else if (flag==2){printf("rejected\n");}else{printf("%d", res);for (int i = 0; i < lent; ++i) {printf(" %d",ans[i]);}printf("\n");}}return 0;
}

poj1416:Shredding Company相关推荐

  1. POJ1416 Shredding Company ACM解题报告(DFS回溯+剪枝)

    本渣渣明天C语言考试,今天有点亢奋,又来了一题,这题感觉比前一题难多了,不仅是字符串转化为数字,即使看了百度提醒的搜索树,还是参考了一些百度的代码.感觉道阻且长,我仍需努力.下面是题目翻译: 公司现在 ...

  2. OpenJudge 2803 碎纸机 / Poj 1416 Shredding Company

    1.链接地址: http://poj.org/problem?id=1416 http://bailian.openjudge.cn/practice/2803 2.题目: 总时间限制: 1000ms ...

  3. 备战NOIP每周写题记录(一)···不间断更新

    ※Recorded By ksq2013 //其实这段时间写的题远远大于这篇博文中的内容,只不过那些数以百记的基础题目实在没必要写在blog上; ※week one 2016.7.18 Monday ...

  4. 整理:poj 基本搜索

    参考:http://exp-blog.com/ https://blog.csdn.net/consciousman/article/details/54613292 POJ2488 – A Knig ...

  5. ACM题集以及各种总结大全(转)

    ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...

  6. ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》

    罗书<算法竞赛入门到进阶>题目一览 第1章 算法竞赛概述 HDU1000 HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)( ...

  7. 搜索题,留着以后慢慢刷

    转过来,留着以后慢 慢 刷555.. 简单搜索 (1)深度优先搜索 (poj2488,poj3009,poj1321) (2)广度优先搜索 (poj3278,poj1426,poj3126,poj30 ...

  8. python round_Python round() 函数

    round() 方法返回浮点数x的四舍五入值. 以下是 round() 方法的语法: round( x [, n] ) x为浮点数,n为保留的小数点位. 以下展示了使用 round() 方法的实例: ...

  9. 令人头秃的集训第三周学习记录(练习题+感悟)

    永动WA题机der学习摘录 (一)经典内容(课堂) 问题一:打印n个数的全排列,共n!个 Sample Input Sample Output 代码 问题一de延伸:<五星填数> Samp ...

最新文章

  1. 一文告诉你,如何使用Python构建一个“谷歌搜索”系统 | 内附代码
  2. 我专严新闻小偷之心得与大家交流
  3. 网络部分面试之路由协议
  4. 系统架构师秘籍(二)软件架构- 续
  5. 漫谈设计模式--3分钟理解桥接模式:笔和画的关系
  6. PHP MySQL Functions (PDO_MYSQL)
  7. ORACLE虚拟索引(Virtual Index)
  8. 0712 - 坚守,加强老本
  9. 如何找出 Mac 上两个文档之间的差异?
  10. c语言 头文件卫士详解,C 语言条件编译与防止头文件重复
  11. UTF-8 汉字编码与其16进制对照
  12. MKV文件提取dts音频转化成ac3
  13. mac系统如何获取最好权限删除顽固文件?
  14. Swagger与其他API文档编写工具对比
  15. openwrt web框架luci简介,20行代码写一个前后端交互页面
  16. 如何防御ddos攻击?
  17. matlab更换YAHEI CONSOLAS HYBRID字体
  18. 全连接神经网络、卷积神经网络
  19. C语言-1(第一天学C语言)
  20. 这是你的船--读后感

热门文章

  1. 第五章 MongoDb索引优化 5.5
  2. 第二十五章 Caché 变量大全 $ZB 变量
  3. 解决会声会影X5出现错误38,文件已损坏或被修改
  4. 幻灯片制作软件PhotoStage for Mac
  5. 现在paypal怎么提现?
  6. React-Native之播放器全屏播放
  7. 利用JavaScript实现加减乘除运算
  8. 用python计算贷款_python for android : 贷款月月还款额计算
  9. jquery 的mmgrid 加载数据时的传参数的方式
  10. 痞子衡嵌入式:利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP