zoukankan      html  css  js  c++  java
  • HDOJ -- 1015

    1.DFS

     1 #include<cmath>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<string>
     5 #include<cstring>
     6 #include<iostream>
     7 #include<algorithm>
     8 using namespace std; 
     9 char str[20], ans[10]; 
    10 int vis[20], flag; 
    11 bool cmp(char a, char b){return a > b;}
    12 void dfs(int dep, int target, int len){
    13     if(dep == 5){
    14         int sum = 0; 
    15         for(int i = 1; i <= 5; i ++)
    16             sum += (int)pow(ans[i-1]-'A'+1., i)*(int)pow(-1., i+1); 
    17         if(sum == target){
    18             flag = 1; 
    19             printf("%s
    ", ans); 
    20         }
    21         return ; 
    22     }
    23     for(int i = 0;  i < len; i ++){
    24         if(!vis[i]){
    25             vis[i] = 1; 
    26             ans[dep] = str[i]; 
    27             dfs(dep+1, target, len); 
    28             if(flag) return;    
    29             vis[i] = 0; 
    30         }
    31     }
    32 }
    33 int main(){
    34     int target; 
    35     freopen("in.c", "r", stdin); 
    36     while(~scanf("%d%s", &target, str) && strcmp(str, "END") && target){
    37         flag = 0; 
    38         memset(vis, 0, sizeof(vis)); 
    39         int len = strlen(str); 
    40         sort(str, str+len, cmp); 
    41         dfs(0, target, len); 
    42         if(!flag) printf("no solution
    "); 
    43         memset(str, 0, sizeof(str)); 
    44     }
    45     return 0; 
    46 }

    2,二进制枚举

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<cstring>
     6 using namespace std; 
     7 int main(){
     8     int n, a[20]; 
     9     string str; 
    10     freopen("in.c", "r", stdin); 
    11     while(cin >> n >> str && str != "END" && n){
    12         char ans[10] = "A";  
    13         int flag = 0; 
    14         for(int i = 0;i < (1 << str.size()); i ++){
    15             int cnt = 0, sum = 0; 
    16             for(int j = 0; j < str.size(); j ++){
    17                 if(i & (1 << j)) a[cnt++] = j; 
    18             }
    19             if(cnt == 5){
    20                 char tmp[10]; 
    21                 for(int i = 0; i < 5; i ++) tmp[i] = str[a[i]];
    22                 sort(tmp, tmp+5); 
    23                 do{
    24                     int sum = 0; 
    25                     for(int i = 1; i <= 5; i ++) 
    26                         sum += (int)pow(-1., i+1)*(int)pow(tmp[i-1]-'A'+1., i); 
    27                     if(sum == n){
    28                         flag = 1; 
    29                         if(strcmp(ans, tmp) < 0) strcpy(ans, tmp); 
    30                     }
    31                 }while(next_permutation(tmp, tmp+cnt)); 
    32             }
    33         }
    34         if(flag) printf("%s
    ", ans); 
    35         else cout << "no solution" << endl; 
    36     }
    37     return 0; 
    38 }
  • 相关阅读:
    K8S入门学习
    CentOs7安装docker(第二篇)
    使用NFS时的一些问题
    linux的一些基本命令
    centOS7搭建NFS服务器
    ELK日志系统+x-pack安全验证
    如何在网页中用echarts图表插件做出静态呈现效果
    3.29——工作日志
    导航选中,背景变色效果
    网站滚动n个像素后,头部固定
  • 原文地址:https://www.cnblogs.com/anhuizhiye/p/3673302.html
Copyright © 2011-2022 走看看