1 #include <cstdio> 2 #include <string.h> 3 #include <string> 4 #include <algorithm> 5 using namespace std; 6 bool visitIs[30] ,judge; 7 int ans[6] ,N[26] ,total; 8 long long target ,sum; 9 void set(char *a) 10 { 11 int i ,len; 12 for(i = 0 ;i < 30 ;i++) 13 visitIs[i] = false; 14 judge = false; 15 len = strlen(a); 16 sum = 0 ; 17 total = -1; 18 for(i = 0 ;i < len ;i++) 19 N[++total] = (int)a[i] - 64; 20 sort(N ,N + total); 21 } 22 void solve(int n) 23 { 24 int i ,j; 25 long num; 26 if(n == 6) 27 { 28 if(target == sum) 29 judge = true; 30 return ; 31 } 32 for(i = total ;i >= 0 ;i--) 33 { 34 if(visitIs[i] == false) 35 { 36 num = -1; 37 for(j = 1 ;j <= n ;j++) 38 num = num * N[i] * (-1); 39 sum = sum + num; 40 visitIs[i] = true; 41 ans[n] = N[i]; 42 solve(n + 1); 43 if(judge == true) return ; 44 sum = sum - num; 45 visitIs[i] = false; 46 } 47 } 48 } 49 int main() 50 { 51 char str[12]; 52 while(scanf("%lld %s",&target ,str)) 53 { 54 string s = str; 55 if(target == 0 && s == "END") break; 56 else 57 { 58 set(str); 59 solve(1); 60 if(judge == true) 61 for(int i = 1 ;i <= 5 ;i++) 62 printf("%c",(char)(ans[i] + 64)); 63 else 64 printf("no solution"); 65 printf("\n"); 66 } 67 } 68 }
好久没有写代码了,感觉怎么这么手生呢!!!!
快别扯淡了,我什么都不想听