版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xj13821328013/article/details/75174572
#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;
}
不知道为什么结果就是不对,我也是服= =