Hdu1015&&寒假作业第二组I题

题意是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=1;
    for(;y>0;y--)
        z*=x;
    return z;
}
bool compare(int a,int b)
{
      return a>b;

}
int num[1000]={0};
int num1[1000]={0};
int result[1000]={0};
char word[10000];
int tar;
int len;
int dfs(int m,int sum)
{
        if(sum==tar&&m==6)
        return 1;
        else if(sum!=tar&&m==6)
          return 0;
        else if(m<=5)
        {
               for(int i=0;i<len;i++)
               {
                       if(!num1[i])
                       {
                          num1[i]=1;
                          result[m]=num[i];
                          if(m%2==0)
                           {
                                if(dfs(m+1,sum-pow(num[i],m)))
                                return 1;}
                          else {
                                if(dfs(m+1,sum+pow(num[i],m)))
                                return 1;}

                           num1[i]=0;
                       }
               }
        }
        return 0;
}
int main()
{
      while(scanf("%d%s",&tar,word)!=EOF)
      {
        memset(num1,0,sizeof(num1));
        if(!strcmp(word,"END"))
                break;
        len=strlen(word);
        for(int i=0;i<len;i++)
        {
              num[i]=word[i]-‘A‘+1;
        }
        sort(num,num+len,compare);
                if(dfs(1,0))
                {
                        for(int i=1;i<6;i++)
                          printf("%c",result[i]+‘A‘-1);
                          printf("\n");
                }
                else printf("no solution\n");
      }
      return 0;
}
时间: 2024-10-10 04:22:16

Hdu1015&&寒假作业第二组I题的相关文章

寒假作业第二组P&amp;&amp;Q&amp;&amp;R题解

P的题意是有M份作业,这些作业有不同的截止日期,超过截止日期完成,不同的作业有不同的罚分,求如何完成罚分最低. 首先,从截止日期最长的那个作业到截止日期,这些天数是固定的,所做的就是把这些作业填进这些天.很明显的贪心,把作业按从大到小罚分排序,罚分截止日期越近的放在前面,然后通过枚举把作业往时间轴里放,知道这些天数被填满. 1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #includ

集训队寒假集训第二场补题题解

补题什么的待填坑... A - Generous Kefa (语法基础) 直接开桶看看有没有超过三个的,因为题目明确提出没有气球也是可以的 代码 #include <bits/stdc++.h> using namespace std; int bk[123213]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k; cin>>n>>k; string a; cin>&g

福建工程学院寒假作业第一周F题

Subsequence TimeLimit:1000MS  MemoryLimit:65536K 64-bit integer IO format:%lld 问题描述: A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, and a positive integer S (S < 100 000 000) are given. Write a progra

2016蓝桥杯省赛C/C++A组第六题 寒假作业

题意:现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ 每个方块代表1~13中的某一个数字,但不能重复. 比如: 6 + 7 = 13 9 - 8 = 1 3 * 4 = 12 10 / 2 = 5 以及: 7 + 6 = 13 9 - 8 = 1 3 * 4 = 12 10 / 2 = 5 就算两种解法.(加法,乘法交换律后算不同的方案) 你一共找到了多少种方案? 分析:回溯即可,但是如果等到cur==12

扩展欧几里得模板(洛谷1082 同余方程NOIP 2012 提高组 第二天 第一题)

题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正整数 x0,即最小正整数解.输入数据保证一定有解. 输入输出样例 输入样例#1: 3 10 输出样例#1: 7 说明 [数据范围] 对于 40%的数据,2 ≤b≤ 1,000: 对于 60%的数据,2 ≤b≤ 50,000,000: 对于 100%的数据,2 ≤a, b≤ 2,000,000,000

洛谷 P2717 寒假作业

题目背景 zzs和zzy正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有n项寒假作业.zzy给每项寒假作业都定义了一个疲劳值Ai,表示抄这个作业所要花的精力.zzs现在想要知道,有多少组连续的寒假作业的疲劳值的平均值不小于k? 简单地说,给定n个正整数A1,A2,A3,...,An,求出有多少个连续的子序列的平均值不小于k. 输入输出格式 输入格式: 第一行两个正整数,n和k. 第二行到第n+1行,每行一个正整数Ai. 输出格式: 一个非负整数. 输入输出样例 输入样例#1: 3

洛谷P2717 寒假作业

题目:https://www.luogu.org/problemnew/show/2717 题目背景 zzs和zzy正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有n项寒假作业.zzy给每项寒假作业都定义了一个疲劳值Ai,表示抄这个作业所要花的精力.zzs现在想要知道,有多少组连续的寒假作业的疲劳值的平均值不小于k? 简单地说,给定n个正整数A1,A2,A3,...,An,求出有多少个连续的子序列的平均值不小于k. 输入输出格式 输入格式: 第一行两个正整数,n和k. 第二行到第

2017级面向对象程序设计寒假作业2

Deadline:2018.02.11 22:00 pm 第一次的寒假作业,开启了大家的寒假生活,转眼回到了"小学生作文题"的感觉.不知道是否也通过这次作业,将你的回忆时光拉回到了几年前或十年前,沉思回忆代替了纷扰的知识.很多同学回忆了小学.中学的课任老师,或书法.绘画的老师.无论他们是严厉还是宽容,是鸡汤还是淡定,都或多或少的影响或潜移默化改变着你.在经过一次时光超越后,书归正传,我们开启编码的作业. 一.Pintia小作业 注册pintia,填写昵称为"fzu+学号&qu

寒假作业2

寒假作业2 GitHub仓库地址:Destr 慕课在线学习 课程 我选择的是西安交通大学计算机程序设计(C++),授课老师赵英良. 原因 这门课程从C++基础开始讲起,较好的完成了从C到C++的过度,而且西安交大也是一所知名的高校,可以使我较好的在寒假期间完成C++的学习 课程目录 第1周 程序设计与C++概述 第2周 简单信息的表示和基本运算 第3周 运算的流程控制 第4周 复杂信息的表达与处理 第5周 问题的模块化求解 第6周 问题的模块化求解(2)--特殊函数 第7周 按址操作(1)--指