标签:
1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 bool flag; 8 int len; 9 int cur; 10 int target; 11 char s[15]; 12 char array[6]; 13 bool used[20]; 14 15 bool cmp(char a,char b) 16 { 17 return a>b?true:false; 18 } 19 20 bool judge() 21 { 22 int sum=0; 23 for(int i=0;i<5;i++) 24 { 25 int tmp=(int)(pow(array[i]-‘A‘+1.0,i+1.0)+0.5); 26 i%2?sum-=tmp:sum+=tmp; 27 } 28 return sum==target; 29 } 30 31 void DFS(int cur) 32 { 33 if(flag) 34 return; 35 if(cur==5) 36 { 37 array[cur]=‘\0‘; 38 if(judge()) 39 { 40 flag=true; 41 return; 42 } 43 return; 44 } 45 for(int i=0;i<len;i++) 46 if(!used[i]&&!flag) 47 { 48 array[cur]=s[i]; 49 used[i]=true; 50 DFS(cur+1); 51 used[i]=false; 52 } 53 } 54 55 int main() 56 { 57 while(scanf("%d %s",&target,s)&&target&&strcmp(s,"END")!=0) 58 { 59 len=strlen(s); 60 memset(used,false,sizeof(used)); 61 sort(s,s+len,cmp); 62 flag=false; 63 DFS(0); 64 if(flag) 65 printf("%s\n",array); 66 else 67 printf("no solution\n"); 68 } 69 return 0; 70 }
标签:
原文地址:http://www.cnblogs.com/homura/p/4680488.html