脑子有点坑,不知道为什么,可能以前遇到阴影了,现在看到dfs暴力搜有种莫名的害怕,总结一下模板吧
这题还是没意思的,直接暴力搜,不过我写的很烂,可能就是这个原因吧,看了别人的模板,觉得不错。
学了个单词”lexicography“ 字典序,又吃了没文化的亏,wa一次
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <string> #include <stack> #include <queue> #include <algorithm> const int inf = (1<<31)-1; const int MAXN = 26; using namespace std; int vist[MAXN]; char s[MAXN]; //char ts[MAXN]; int ts[MAXN]; int length,n; int flag; void dfs(int x){ if(flag)return ; if(x==5){ if(ts[0]-(int)pow(ts[1],2)+(int)pow(ts[2],3)-(int)pow(ts[3],4)+(int)pow(ts[4],5)==n){ flag = 1; //return; } return; } for(int i=0;i<length&&flag==0;i++){ if(!vist[i]){ vist[i] = 1; ts[x] = s[i]-'A'+1; dfs(x+1); vist[i] = 0; } } return ; } int cmp(int a,int b){ if(a>b)return true; else return false; } int main() { while(scanf("%d%s",&n,s),strcmp(s,"END")!=0){ flag = 0; memset(vist,0,sizeof(vist)); length = strlen(s); sort(s,s+length,cmp); dfs(0); if(flag){ for(int i=0;i<5;i++){ printf("%c",ts[i]-1+'A'); } cout<<endl; }else printf("no solution "); } //cout << "Hello world!" << endl; return 0; }