HDU1015

来源:互联网 发布:长沙理工网络教务系统 编辑:程序博客网 时间:2024/05/17 01:21
#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;char str[25];int flag[25];int s[25];int f[25];bool cmp(char a,char b){return a>b;}int res(int v,int w,int x,int y,int z){return (v-w*w+x*x*x-y*y*y*y+z*z*z*z*z);}int dfs(int step,int len,int n){if(step==5){if(res(f[0],f[1],f[2],f[3],f[4])==n)return 1;return 0;}for(int i=0;i<len;i++){if(flag[i])     continue;flag[i]=1;f[step]=s[i];if(dfs(step+1,len,n))return 1;flag[i]=0;}return 0;}int main(){int i;int n;memset(str,'A',20);while(cin>>n>>str){if(n==0&&str[0]=='E'&&str[1]=='N'&&str[2]=='D')break;int len=strlen(str);sort(str,str+len,cmp);for( i=0;i<len;i++){s[i]=str[i]-'A'+1;flag[i]=0;}if(dfs(0,len,n)){for(i=0;i<5;i++)printf("%c",f[i]+'A'-1);cout<<endl;}elseputs("no solution");}return 0;}
一开始DFS少了个return 0导致结果错误
0 0