首页 > 代码库 > poj1416

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