zoukankan      html  css  js  c++  java
  • HDU 1015

    给定一个目标值target,再给你一个备选字符串(5~12个字符),

    要你在这个字符串里选5个出来,满足题中给定的等式,并且你选择的这5个字符组成的字符串必须是所有可能情况中按字典序最大的情况

    简单 DFS

     1 #include <iostream>
     2 #include <cstdio>  
     3 #include <cstring>
     4 using namespace std;
     5 int vis[105];
     6 char s[105],ans[10],tmp[10];
     7 int s1[105];
     8 int a[10],len,m;
     9 bool flag;
    10 int cal()
    11 {
    12     return a[0]-a[1]*a[1]+a[2]*a[2]*a[2]-a[3]*a[3]*a[3]*a[3]+a[4]*a[4]*a[4]*a[4]*a[4];
    13 }
    14 void dfs(int x)
    15 {
    16     if(x>4)
    17     {
    18         if(cal()==m)
    19         {
    20             for(int i=0;i<5;i++) tmp[i]='A'-1+a[i];
    21             tmp[5]='';
    22             if(!flag) strcpy(ans,tmp),flag=1;
    23             else if(strcmp(ans,tmp)<0){
    24                 strcpy(ans,tmp);
    25             }
    26         }    
    27         return ;
    28     }
    29     for(int i=0;i<len;i++)
    30     {
    31         if(!vis[i])
    32         {
    33             vis[i]=1;
    34             a[x]=s1[i];
    35             dfs(x+1);
    36             vis[i]=0;
    37         }
    38     }
    39 } 
    40 int main()
    41 {
    42     while(~scanf("%d%s",&m,s))
    43     {
    44         if(m==0&&s[0]=='E'&&s[1]=='N'&&s[2]=='D'&&s[3]=='') break;
    45         memset(vis,0,sizeof(vis));
    46         len=strlen(s);
    47         for(int i=0;i<len;i++) s1[i]=s[i]-'A'+1;
    48         flag=0;
    49         dfs(0);
    50         if(!flag) puts("no solution");
    51         else printf("%s
    ",ans);
    52     }
    53 }//    2016-04-22 15:51:41    
    我自倾杯,君且随意
  • 相关阅读:
    [转]MYSQL5.7版本sql_mode=only_full_group_by问题
    [坑]Linux MySQL环境表名默认区分大小写
    [转]CentOS 7.3 安装MySQL
    [转]Oracle截取字符串相关函数
    服务相关
    CSRF攻击
    sqlalchemy——多表操作
    sqlalchemy——基本操作
    高可用——网站运行监控
    高可用——软件质量保证
  • 原文地址:https://www.cnblogs.com/nicetomeetu/p/5421612.html
Copyright © 2011-2022 走看看