poj 1416 Shredding Company(dfs)
来源:互联网 发布:软件项目开发管理制度 编辑:程序博客网 时间:2024/05/18 01:35
参考题解:http://blog.csdn.net/lyy289065406/article/details/6647969
题意和思路在题解都有,思路很简单,奈何我写了好久愣是没实现出来。。。
#include <iostream>#include <cmath>#include <cstring>using namespace std;int aim,result,path,sum,p;int vist[1000000];int Mpow(int a, int b){ int res = 1; while(b) { if(b & 1) res *= a; a = a*a; b >>= 1; } return res;}int getLen(int n){ return (int)log10(n)+1;}int getValue(char *s, int i){ int k = i; int sum = 0; int b,num,p; while(k) { k--; b = i-k-1; num = s[k] - '0'; p = num*Mpow(10,b); sum += p; } return sum;}int getHead(int n, int i){ int len = getLen(n); if(len <= i) return n; return n/Mpow(10,len-i);}int getTail(int n, int i){ return n%Mpow(10,i);}void DFS(char *s, int len){ if(len == 0) { vist[sum]++; if(sum > result && sum <= aim) { result = sum; path = p; } return; } for(int i = 1; i <= len; ++i) { int a = getValue(s,i); sum += a; if(sum > aim) { sum -= a; //continue; return; } p = p*10+i; char b[7]; int j = 0; for(int k = i; k < len; ++k) b[j++] = s[k]; b[j] = '\0'; DFS(b,len-i); sum -= a; p /= 10; } return;}int main(){ while(true) { char s[7]; cin >> aim >> s; int len = strlen(s); int n = getValue(s,len); if(!aim && !n) break; if(aim == n) { cout << aim << " " << n << endl; continue; } int num = n; int k = 0; while(num) { k += num%10; num /= 10; } if(k > aim) { cout << "error" << endl; continue; } result = -1; sum = 0; path = 0; p = 0; memset(vist,0,sizeof(vist)); DFS(s,len); if(vist[result] > 1) cout << "rejected" << endl; else if(vist[result] == 1) { cout << result << " "; int L = getLen(path); for(int i = 1; i <= L; ++i) { int k = getHead(path,1); cout << getHead(n,k) << " "; n = getTail(n,len-=k); path = getTail(path,L-i); } cout << endl; } } 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)
- 阿里巴巴Java开发规范手册
- 【机房重构】登录问题集锦
- Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务
- 俗解HTTPS
- python中的list以及list与array相互转换
- poj 1416 Shredding Company(dfs)
- 使用C++封装库在MDK上建STM32开发工程
- sql 数据库表如何添加字段
- pat 1119. Pre- and Post-order Traversals (30)
- 简单的查询
- C--最短路(Bellman-Ford或者SPFA)
- java反射机制的作用与优点
- 自动装箱拆箱详解
- 41、Linux初步(学习到的linux命令)