poj1416
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj1416相关的知识,希望对你有一定的参考价值。
1 #include <iostream> 2 using namespace std; 3 #define SIZE 6 4 void shred(int step); 5 void shu(int n); 6 void suan(); 7 int num[SIZE]; 8 int nu[6]={0}; 9 int len[SIZE]; 10 int sum=0; 11 int n=0; 12 int m=0; 13 int jishu=0; 14 int p=0; 15 int tar; 16 int pa; 17 int main() 18 { 19 while(1) 20 { 21 cin >>tar; 22 cin >>pa; 23 if(tar==0&&pa==0) 24 break; 25 shu(pa); 26 jishu=0; 27 sum=0; 28 shred(0); 29 30 if(jishu==0) 31 cout <<"error"<<endl; 32 else if(jishu>1) 33 cout <<"rejected"<<endl; 34 else 35 { 36 cout <<sum<<" "; 37 for(int i=0;i<=m;i++) 38 { 39 if(i==m) 40 { 41 cout <<num[i]<<endl; 42 } 43 else 44 cout <<num[i]<<" "; 45 } 46 } 47 } 48 return 0; 49 } 50 51 52 void shred(int step) 53 { 54 if(step==5) 55 { 56 p=0; 57 suan(); 58 if(p<tar&&p>sum) 59 { 60 sum=p; 61 jishu++; 62 } 63 } 64 nu[step]=1; 65 shred(step+1); 66 nu[step]=0; 67 shred(step+1); 68 } 69 70 71 void suan() 72 { 73 int j=0; 74 len[j]=num[0]; 75 for(int i=0;i<m-1;i++) 76 { 77 if(nu[i]==0) 78 { 79 len[j]=len[j]*10+num[i+1]; 80 } 81 else len[++j]=num[i+1]; 82 } 83 for(int i=0;i<=j;i++) 84 { 85 p+=len[i]; 86 } 87 m=j; 88 } 89 90 void shu(int n) 91 { 92 int a[SIZE]; 93 for(int i=0;i<SIZE;i++) 94 { 95 a[i]=n%10; 96 n/=10; 97 } 98 for(int i=0;i<SIZE;i++) 99 { 100 num[i]=a[SIZE-1-i]; 101 } 102 int i=-1; 103 while(num[++i]==0); 104 for(m=0;m+i<SIZE;m++) 105 { 106 num[m]=num[i+m]; 107 } 108 }
以上是关于poj1416的主要内容,如果未能解决你的问题,请参考以下文章