HDU 1015 DFS+排序

来源:互联网 发布:乐高机器人编程程序 编辑:程序博客网 时间:2024/06/10 10:08

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1015
题意:给定一个数n,再给一串大写字母字符,A=1,B=2,etc,从中找5个数,要求字典序最大

using namespace std;#include<cstdio>#include<algorithm>#include<cstring>int l,n; //l=strlen(c)int a[6]; //v,w,x,y,zbool flag,f[27];char c[27];void Dfs(int k){    int v,w,x,y,z;    if (!flag)    {      if (k==6)      {         v=c[a[1]]-'A'+1;         w=c[a[2]]-'A'+1;         x=c[a[3]]-'A'+1;         y=c[a[4]]-'A'+1;         z=c[a[5]]-'A'+1;         if((v-w*w+x*x*x-y*y*y*y+z*z*z*z*z)==n) //公式         {             flag=true;             for (int i=1;i<=5;i++)                cout << c[a[i]];             cout << endl;         }      }     else     for (int i=0;i<l;i++)         if (f[i])         {            a[k]=i;            f[i]=false;            Dfs(k+1);            f[i]=true;         }   }}bool cmp(char p,char q){    return p>q;}int main(){    while(scanf("%d",&n)&&n)    {        memset(f,1,sizeof(f));        flag=false;        cin>>c;        l=strlen(c);        sort(c,c+l,cmp);        Dfs(1);        if (!flag)            cout<< "no solution"<<endl;    }    return 0;}
0 0
原创粉丝点击