题意是A-Z对应1-26,然后给个目标数字和字符串,看看字符串里的某5个字符的组合能不能使v - w^2 + x^3 - y^4 + z^5 = target等式成立,其实多写几个循环也可以达到目的,不过应该会超时,所以还是dfs。

result数组保存最后5个数字,注意要用sort先降序排序,sort默认升序,得加个compare函数,因为本题可能有多解,人家要字典序最大的。num1数组是用来标记该数字被用过没有,注意要memset一下(忘了memset于是每次只能对一组数据也是醉了)。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <map>
#include <string>
#include <string.h>
#include <queue>
#include <vector>
using namespace std;
int pow(int x,int y)
{
int z=;
for(;y>;y--)
z*=x;
return z;
}
bool compare(int a,int b)
{
return a>b; }
int num[]={};
int num1[]={};
int result[]={};
char word[];
int tar;
int len;
int dfs(int m,int sum)
{
if(sum==tar&&m==)
return ;
else if(sum!=tar&&m==)
return ;
else if(m<=)
{
for(int i=;i<len;i++)
{
if(!num1[i])
{
num1[i]=;
result[m]=num[i];
if(m%==)
{
if(dfs(m+,sum-pow(num[i],m)))
return ;}
else {
if(dfs(m+,sum+pow(num[i],m)))
return ;} num1[i]=;
}
}
}
return ;
}
int main()
{
while(scanf("%d%s",&tar,word)!=EOF)
{
memset(num1,,sizeof(num1));
if(!strcmp(word,"END"))
break;
len=strlen(word);
for(int i=;i<len;i++)
{
num[i]=word[i]-'A'+;
}
sort(num,num+len,compare);
if(dfs(,))
{
for(int i=;i<;i++)
printf("%c",result[i]+'A'-);
printf("\n");
}
else printf("no solution\n");
}
return ;
}

最新文章

  1. phpstorm设置
  2. 学习C++.Primer.Plus 6 分支语句和逻辑操作符
  3. 附12 grafana配置文件
  4. Object Pascal 面向对象的特性
  5. LeetCode 342
  6. Swift的闭包(二):捕获值
  7. 【分享】LateX排版软件学习教程合集
  8. win10下安装Django
  9. C#入门经典第六章函数-2-委托
  10. Hibernate 基础解析(Configuration,SessionFactory,Session,Transaction,Query,Criteria)
  11. PHP SOAP 发送XML
  12. adb 安装apk到只当设备
  13. JavaWeb开发之详解Servlet及Servlet容器
  14. java的几种对象(PO,VO,DAO,BO,POJO)解释 【转】
  15. day 51 随机验证码, 验证登陆 ,以及 装饰器在函数中的应用
  16. equal&amp;==&amp;hashcode
  17. HDU 4619 Warm up 2 最大独立集
  18. spring-cloud-config笔记
  19. JavaSE环境Shiro的搭建及常用API
  20. 自己平时收集的css、html笔记(适合初级前端攻城狮)

热门文章

  1. javascript(6)
  2. linux 进程学习笔记-暂停进程
  3. ACM学习历程—HDU1719 Friend(数论)
  4. 【Lintcode】106.Convert Sorted List to Balanced BST
  5. ActiveRecord 的类型初始值设定项引发异常
  6. day4 DOM,BOM
  7. JDK5特性
  8. linux忘记登陆密码的两种破解办法
  9. 3-C++程序的结构1.5
  10. Ext.Net 复制GridPanel的数据