HDU ACM 1015 Safecracker 暴力DFS

来源:互联网 发布:php web服务器搭建 编辑:程序博客网 时间:2024/06/02 18:59

分析:暴搜,复杂度一次最高也才12^5。

#include<iostream>#include<cmath>using namespace std;#define N 30char s[15],ts[10],ans[10];int tar,index[N];bool vis[N];void dfs(int d,int n){int i,tmp;if(d==5){tmp=index[ts[0]-'A']-pow(index[ts[1]-'A'],2)+pow(index[ts[2]-'A'],3)-pow(index[ts[3]-'A'],4)+pow(index[ts[4]-'A'],5);if(tmp==tar&&strcmp(ts,ans)>0)strcpy(ans,ts);return ;}for(i=0;i<n;i++)if(!vis[s[i]-'A']){ts[d]=s[i];vis[s[i]-'A']=true;dfs(d+1,n);vis[s[i]-'A']=false;}}int main(){int i;for(i=0;i<26;i++) index[i]=i+1;while(cin>>tar>>s&&(tar||strcmp(s,"END"))){memset(vis,false,sizeof(vis));memset(ans,'\0',sizeof(ans));memset(ts,'\0',sizeof(ts));dfs(0,strlen(s));if(strlen(ans)==0) cout<<"no solution"<<endl;elsecout<<ans<<endl;}    return 0;}


0 0
原创粉丝点击