首页 > 代码库 > poj1416
poj1416
#include<iostream> using namespace std; int target,datanum; int road[100],temproad[100]; int N,flag,maxsum; int data[100],datatemp[100]; int tail; void cun(int n) { tail=0; while(n/10) { int m=n%10; n=n/10; datatemp[tail++]=m; } datatemp[tail++]=n%10; for(int i=0;i<tail;i++) data[i]=datatemp[tail-i-1]; return; } void dfs(int n, int step, int sum, int tobe) { if(sum>target) return; if(n==N-1) { sum=sum+tobe*10+data[N-1]; temproad[step]=tobe*10+data[N-1]; if(sum>target) return; if(sum==maxsum) flag=1; else if(sum>maxsum) { for(int i=0;i<100;i++) road[i]=-1; flag=0; maxsum=sum; for(int i=0;i<=step;i++) road[i]=temproad[i]; } return; } temproad[step]=tobe*10+data[n]; dfs(n+1,step+1,sum+tobe*10+data[n],0);//切 temproad[step]=-1; dfs(n+1,step,sum,tobe*10+data[n]); } int main() { //freopen("input.txt","r",stdin); while(1) { cin>>target>>datanum; //cout<<target<<alldata<<endl; if(target==0&&datanum==0) break; if(target==datanum) { cout<<target<<‘ ‘<<target<<endl; continue; } for(int i=0;i<100;i++) data[i]=-1; cun(datanum); N=tail; maxsum=-1; flag=0; for(int i=0;i<100;i++) { road[i]=-1; temproad[i]=-1; } dfs(0,0,0,0); if(maxsum==-1) cout<<"error"<<endl; else if(flag==1) cout<<"rejected"<<endl; else { cout<<maxsum<<‘ ‘; for(int i=0;i<100;i++) { if(road[i]!=-1) cout<<road[i]<<‘ ‘; } cout<<endl; } } return 0; }
poj1416
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。