国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

poj 1416 Shredding Company(dfs)

2019-11-08 02:22:45
字體:
來源:轉載
供稿:網友

參考題解: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;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳山县| 乌拉特中旗| 苍南县| 元谋县| 聂拉木县| 永胜县| 新昌县| 龙井市| 旅游| 东丰县| 安乡县| 乐平市| 靖宇县| 福建省| 长寿区| 常宁市| 铜鼓县| 西乡县| 福州市| 贵南县| 大足县| 泽库县| 双江| 宣恩县| 高台县| 新邵县| 监利县| 凤山县| 南雄市| 民权县| 陆河县| 孟州市| 威海市| 微山县| 霍城县| 永善县| 陇川县| 阳泉市| 福安市| 新昌县| 阜宁县|