?
题意:题目开始一大堆乱七八糟的东西,但是基本没多大用,只要提取出题目要用的信息就好,大概意思是给定长度5-12的字符串,然后给定一个目标值,问字符串是否存在长度为5并且满足式子 v - w^2 + x^3 - y^4 + z^5 = target 的子串,有就输出,没有就输出no solution,如果有多种情况,输出字典序最大的那个。
思路:最坏情况是12*11*10*9*8 那么dfs直接枚举所有情况要是满足即可。当然也可以直接5重循环暴力枚举。
因为用到字典序最大,所以先对字符串从大到小排序。
教训:思路不清晰,不要轻易动手,错误百出,还是练的太少,也不要只看做题的数量,更关键是质量。
#include
#include
#include
using namespace std; bool cmp(char a,char b) { return a>b; } int k,j,flag,vis[15]; char s[15],ss[6],res[6]; bool judge(int v,int w,int x,int y,int z) { if(v-w*w+x*x*x-y*y*y*y+z*z*z*z*z==k) return 1; return 0; } void dfs(int x) { if(flag) return; int i; if(x==5) { if(judge(ss[0]-64,ss[1]-64,ss[2]-64,ss[3]-64,ss[4]-64)) {flag=1;strcpy(res,ss);} return; } int l=strlen(s); for(i=0;i
?