1 ABCDEFGHIJKL 11700519 ZAYEXIWOVU 3072997 SOUGHT 1234567 THEQUICKFROG 0 END
LKEBA YOXUZ GHOST no solution
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<limits.h>
#include<cmath>
using namespace std;
char str[110];
int n,len;
int num[20],numm[110];
int visit[110];
#define res(v,w,x,y,z) v-w*w+x*x*x-y*y*y*y+z*z*z*z*z
bool dfs(int step)
{
if(step==5)
{
if(res(num[0],num[1],num[2],num[3],num[4])==n)
return true;
return false;
}
for(int i=len-1;i>=0;i--)
{
if(visit[i])
continue;
visit[i]=1;
num[step]=numm[i];
if(dfs(step+1))
return true;
visit[i]=0;
}
return false;
}
int main()
{
while(~scanf("%d%s",&n,str))
{
if(n==0&&!strcmp(str,"END"))
break;
len=strlen(str);
sort(str,str+len);
for(int i=0;i<len;i++)
numm[i]=str[i]-'A'+1;
memset(visit,0,sizeof(visit));
if(dfs(0))
printf("%c%c%c%c%c\n",num[0]+'A'-1,num[1]+'A'-1,num[2]+'A'-1,num[3]+'A'-1,num[4]+'A'-1);
else
printf("no solution\n");
}
return 0;
}
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<limits.h>
#include<cmath>
using namespace std;
char str[110];
int n,len;
int num[20],numm[110];
int visit[110];
#define res(v,w,x,y,z) v-w*w+x*x*x-y*y*y*y+z*z*z*z*z
bool dfs(int step)
{
if(step==5)
{
if(res(num[0],num[1],num[2],num[3],num[4])==n)
return true;
return false;
}
for(int i=len-1;i>=0;i--)
{
if(visit[i])
continue;
visit[i]=1;
num[step]=numm[i];
if(dfs(step+1))
return true;
visit[i]=0;
}
return false;
}
int main()
{
while(~scanf("%d%s",&n,str))
{
if(n==0&&!strcmp(str,"END"))
break;
len=strlen(str);
for(int i=0;i<len;i++)
numm[i]=str[i]-'A'+1;
sort(str,str+len);
memset(visit,0,sizeof(visit));
if(dfs(0))
printf("%c%c%c%c%c\n",num[0]+'A'-1,num[1]+'A'-1,num[2]+'A'-1,num[3]+'A'-1,num[4]+'A'-1);
else
printf("no solution\n");
}
return 0;
}
HDU 1015 Safecracker,布布扣,bubuko.com
原文:http://blog.csdn.net/u013582254/article/details/38176741