poj-1416 Shredding Company DFS
来源:互联网 发布:可视化编程 编辑:程序博客网 时间:2024/04/30 23:12
题意:有一个碎纸机,给你一个最多有6位数的纸片,需要让你将纸片切开,使得切开的纸片的数值和最接近或等于target值。输入target和纸片,输出最接近target的值和纸片的切法。特殊规则:如果纸片的值和target相等,那么不用切开。如果所有情况下都不存在小于target的切法,那么输出error。如果最终的答案有多种,那么输出rejected。
思路:DFS搜索所有切开纸片的情况,在对纸片完全分割完后,对各纸片数值和与target进行对比,小于target值,且大于ans值记录各纸片的情况并更新ans值。
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cstdlib>#include <stack>#define INF 0x3f3f3f3f#define mod 1000000007using namespace std;int arr[7],que[1010];char str[10];int len,tar,ans,ansl;int flag;void DFS(int t,int pos){ int i; if(pos>=len) { int sum=0; for (i=0;i<t;i++) { sum += que[i]; } if(sum>tar) return ; if(sum>ans) { flag=0; ans=sum; ansl=t; for (i=0;i<t;i++) { arr[i]=que[i]; } } if(sum==ans) flag++; return ; } int m=0; for (i=pos;i<len;i++) { m= m*10 + str[i]-'0'; que[t++]=m; DFS(t,i+1); t--; }}int main(){ int i; while(scanf("%d%s",&tar,str),tar||str[0]!='0') { ans=0;flag=0; int sum=0; len = strlen(str); for (i=0;i<len;i++) { sum += str[i]-'0'; } if(sum>tar) { printf("error\n"); continue; } DFS(0,0); if(flag>1) printf("rejected\n"); else { printf("%d ",ans); for (i=0;i<ansl;i++) { printf("%d ",arr[i]); } printf("\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)
- 手机即使战略
- error C2668: “fabs”: 对重载函数的调用不明确
- extjs 可编辑numberfield 控制小数位数
- BZOJ 2242 [SDOI2011]计算器 BSGS+快速幂+EXGCD
- OpenVPN server端配置文件详细说明
- poj-1416 Shredding Company DFS
- 实习笔记4
- C语言中的传值调用
- 源码下载---程序猿七夕告白的必备利器
- Vim复制粘贴与寄存器
- API 简单理解
- ProGuard Version5.2(4.2)Manual-->Limitations
- SDN的两种方式分析
- 我的第一份工作-檀木科技