HDOJ 1015 Safecracker

Safecracker


#include <iostream>
#include <algorithm>
#include <string.h>
#include <cmath>


using namespace std;


int OK=1;


int cmp(const void* a,const void * b)
{
    return *(char*)b-*(char *)a;
}


void dfs(int cur,int n,int target,int* a,int* b,int* vis)
{


  if(OK==1)
  {
        if(cur==5)
        {
            int t=( int)(b[0]-b[1]*b[1]+pow((double)b[2],3.)-pow((double)b[3],4.)+pow((double)b[4],5.)+0.5);//防止误差
                   // cout<<t<<endl;//v - w^2 + x^3 - y^4 + z^5 = target
            if(t==target)
            {
                for(int i=0;i<5;i++)
                {
                    cout<<(char)(b-1+'A');
                }
               cout<<endl;
               OK=0;
            }
        }
        else
        {


            for(int j=0;j<n;j++)
            {
             if(vis[j]==0)
             {
                vis[j]=1;
                b[cur]=a[j];
                dfs(cur+1,n,target,a,b,vis);
                vis[j]=0;
             }


            }


        }
  }
  else return ;
}




int main()
{
    int n;
    char str[50];


while(cin>>n>>str&&n)
{
   OK=1;
    int a[50];
    int b[50];
    int vis[50]={0};
    int len=strlen(str);
    qsort(str,len,sizeof(str[0]),cmp);
    for(int i=0;i<len;i++)
      {
          a=(str-'A')+1;
          //cout<<a<<" ";
      }


    dfs(0,len,n,a,b,vis);
    if(OK==1)
      cout<<"no solution"<<endl;
}




   return 0;
}

posted @ 2013-03-25 07:22  码代码的猿猿  阅读(93)  评论(0编辑  收藏  举报