hdu 1015

来源:互联网 发布:电脑防辐射软件 编辑:程序博客网 时间:2024/06/06 03:35
#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int cmp(int a,int b){return a>b;}int flag;int b[10],a[50],len,n,mark[30],c[10];void dfs(int m){int ans,i;if(m==6){      ans=b[1]-b[2]*b[2]+b[3]*b[3]*b[3]-b[4]*b[4]*b[4]*b[4]+b[5]*b[5]*b[5]*b[5]*b[5];       if(ans==n&&flag==0)//falg==0是为了记录第一次出现最大的  {    for(i=1;i<=5;i++)//这时的b[i]应用数组存起来,因为后面b[i]的值在不断变化c[i]=b[i];    flag=1;  }}else{for(i=0;i<len;i++){if(!mark[a[i]]){b[m]=a[i];mark[a[i]]=1;dfs(m+1);mark[a[i]]=0;}}}}int main(){int i;char str[100];while(scanf("%d%s",&n,str)!=EOF){if(n==0&&strcmp(str,"END")==0)break;len=strlen(str);for(i=0;str[i]!='\0';i++)a[i]=str[i]-'A'+1;sort(a,a+len,cmp);memset(mark,0,sizeof(mark));flag=0;dfs(1);if(flag==1){for(i=1;i<=4;i++)printf("%c",c[i]+'A'-1);printf("%c\n",c[5]+'A'-1);}else{printf("no solution\n");}}return 0;}

0 0
原创粉丝点击