POJ 1416 Shredding Company <DFS>
来源:互联网 发布:新致软件成都分公司 编辑:程序博客网 时间:2024/05/21 06:38
题目:传送门
题目大意:给出一个目标数字和一个用来切分的数字(长度均不大于6,没有前导0),求切分方案,使得切分的各段之和最接近目标数字但是又不大于目标数字。如果不能找到这样的切分,则输出“error”,如果有多个满足要求的方案,则输出“rejected”,否则则输出那个唯一的切分方案。
分析:这本是一道水题,简单DFS。但我还是想纪念一下自己做题水平的一个小小提高。刚开始刷题那会儿,因为是英文题,常常要读很久的题,有时干脆百度看别人解题报告的题目大意,而现在我已经能够很轻松地快速地阅读并理解题目了,这也算英语水平的提高吧。还有就是刚开始常常是看了大牛们的代码才能写出来,而现在我也能独立思考并给出自己的解法,这道题我就是不到一个小时内1A的,虽是水题,但这种完全独立完成,并且发现比网上我经常学习的大牛们的代码还要精简的感觉,还是挺棒的,继续加油吧!
代码:
#include <iostream>#include <algorithm>#include <cstdio>#include <string>using namespace std;int tar,n;string nums;string ans;string cut;int sum;int cans;bool flag;void dfs(int d,int cur){ if(d==n-1){ cut.push_back('1'); sum+=(cur*10+nums[d]-'0'); if(sum>tar) ; else if(sum>cans){ ans=cut; cans=sum; flag=false; } else if(sum==cans){ flag=true; } return ; } string tempS=cut; int temp=sum; cut.push_back('0'); if(sum<=tar) dfs(d+1,cur*10+nums[d]-'0'); cut=tempS+'1'; sum=temp+(cur*10+nums[d]-'0'); if(sum<=tar) dfs(d+1,0);}int main(){ while(cin>>tar>>nums,tar||(nums!="0")){ sum=cans=0; cut.clear(); n=nums.size(); flag=false; dfs(0,0); if(flag) cout<<"rejected"<<endl; else if(!cans) cout<<"error"<<endl; else{ cout<<cans<<' '; for(int i=0;i<n;++i){ cout<<nums[i]; if(ans[i]=='1') printf("%c",i==n-1?'\n':' '); } } } return 0;}
阅读全文
0 0
- poj-1416-Shredding Company-dfs
- poj 1416 Shredding Company dfs
- poj 1416 Shredding Company (dfs)
- poj -1416-Shredding Company-DFS
- poj-1416 Shredding Company DFS
- [POJ 1416]Shredding Company[DFS]
- POJ-1416 Shredding Company(DFS)
- POJ.1416 Shredding Company (DFS)
- poj 1416 Shredding Company(dfs)
- Poj 1416 Shredding Company 【dfs】
- POJ 1416 Shredding Company <DFS>
- POJ 1416-Shredding Company(DFS+更新路径)
- POJ-1416-Shredding Company(模拟+dfs)
- POJ 1416 Shredding Company (DFS+构造)
- poj 1416 Shredding Company (DFS)
- POJ 1416 Shredding Company(简单DFS)
- poj 1416 Shredding Company(DFS减枝)
- poj 1416 Shredding Company(DFS)
- Hadoop基础教程-第9章 HA高可用(9.2 HDFS 高可用配置)(草稿)
- 洛谷 红魔馆OI 妖梦斩木棒
- centos7.2使用rpm安装jdk8
- html第二天的学习
- TCP协议特点和3次握手
- POJ 1416 Shredding Company <DFS>
- Set的命令介绍与代码剖析笔记(7)
- JAVA电话簿
- JZOJ3223. 【HBOI2013】Ede的新背包问题
- s5pv210从存储设备加载代码到DDR
- C#基础巩固——成员函数(属性)的abstract、override、virtual关键字
- android 简单的音乐播放实现
- Hibernate的一级缓存
- POJ 1009--Edge Detection