水題 第六站 HDU Safecracker
阿新 • • 發佈:2018-12-04
#include <iostream> #include <stdio.h> #include <math.h> #include <algorithm> #include <string.h> #include <map> using namespace std; map<char, int>mm; int num[1001],vis[1001]; int ta, len; char m_ch[1001],ch[1001],cha[1001]; void fun() { char c='A'; for(int i=0; i<26; i++) { mm[c++]=i+1; printf("%d\n",c); } } int is(int v,int w,int x,int y,int z,int tar) { if(v-w*w+x*x*x-y*y*y*y+z*z*z*z*z==tar) return 1; else return 0; } void dfs(int cur) { if(cur==5) { if(is(num[0],num[1],num[2],num[3],num[4],ta)&&strcmp(ch,m_ch)>0) strcpy(m_ch,ch); printf("%s\n",m_ch); } else { for(int i=0; i<len; i++) { if(vis[mm[cha[i]]]==0) { num[cur]=mm[cha[i]]; ch[cur]=cha[i]; vis[mm[cha[i]]]=1; dfs(cur+1); vis[num[cha[i]]]=0; } } } } int main () { fun(); while(~scanf("%d",&ta)) { scanf("%s",cha); if(ta==0&&strcmp(cha,"END")==0) break; memset(num,0,sizeof(num)); memset(m_ch,'\0',sizeof(m_ch)); memset(ch,'\0',sizeof(ch)); memset(vis,0,sizeof(vis)); len=strlen(cha); sort(cha,cha+len); printf("%s\n",cha); dfs(0); if(strlen(m_ch)==0) printf("no solution\n"); else printf("%s\n",m_ch); //printf("%d",pow(,2)); } return 0; }
不知道為什麼結果就是不對,我也是服= =