Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
代码,wa了好多次,后来发现,原来输出的每一行结尾都要有空格,这不科学= =或者是我没看到题意?#include <cstdio> #include <iostream> #include <cstring> #include <cmath> using namespace std; int target,num,len,ans; int cc[1100]; int ccc[1100];// answer int sz; bool rej; int take(int L,int R) { int n=num; n%=int(pow(10.0,len-L+1)+.5); R=len-R; while(R--) n/=10; return n; } void dfs(int f,int sum,int cnt[],int size) { if(f==len) { if(sum>ans) { memcpy(ccc,cnt,sizeof(ccc)); ans=sum; sz = size; rej=0; return ; } if(sum==ans)// special rule 3 rej=1; } if(target==take(f+1,len))// special rule 1 { int ss=sum+take(f+1,len); if(ss<=target) { cnt[size++]=take(f+1,len); dfs(len,ss,cnt,size); cnt[--size]=0; } return ; } for(int i=1;i<=len-f;++i) { int ss=sum+take(f+1,f+i); if(ss<=target) { cnt[size++]=take(f+1,f+i); dfs(f+i,ss,cnt,size); cnt[--size]=0; } } return ; } int main() { int getlen(int); while(~scanf("%d%d",&target,&num)&&target+num) { ans=-1; len=getlen(num); memset(cc,0,sizeof(cc)); sz=0; rej=0; dfs(0,0,cc,0); if(ans==-1) printf("error\n"); else if(rej) printf("rejected\n"); else { printf("%d ",ans); for(int i=0;i<sz;++i) printf("%d ",ccc[i]);// there's ' '于每一行结尾 printf("\n"); } } return 0; } int getlen(int num) { int len=0; while(num) { num/=10; len++; } return len; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator