zoukankan      html  css  js  c++  java
  • 【dfs套dfs套dfs】算24点

     Luogu P1236 算24点

    值得纪念一下

      1 #include<cstdio>
      2 #include<iostream>
      3 #define ri register int
      4 #define ll long long
      5 using namespace std;
      6 int a, b, c, d;
      7 int ans[20];
      8 char s[5];
      9 bool flag = 0;
     10 bool dfs3(int x, int y) {
     11     if(x < y) swap(x, y);
     12     if(x + y == 24) {
     13         ans[1] = x, ans[2] = y;
     14         s[1] = '+';
     15         return true;
     16     }
     17     else if(x - y == 24) {
     18         ans[1] = x, ans[2] = y;
     19         s[1] = '-';
     20         return true;
     21     }
     22     else if(x * y == 24) {
     23         ans[1] = x, ans[2] = y;
     24         s[1] = '*';
     25         return true;
     26     }
     27     else if(y) {
     28         if(x % y == 0) {
     29             if(x / y == 24) {
     30                 ans[1] = x, ans[2] = y;
     31                 s[1] = '/';
     32                 return true;
     33             }
     34         }
     35     }
     36     return false;
     37 }
     38 bool dfs2(int x, int y, int z) {
     39     if(x < y) swap(x, y);
     40     if(dfs3(x+y, z)) {
     41         ans[3] = x, ans[4] = y, ans[11] = x+y;
     42         s[2] = '+';
     43         return true;
     44     }
     45     if(dfs3(x-y, z)) {
     46         ans[3] = x, ans[4] = y, ans[11] = x-y;
     47         s[2] = '-';
     48         return true;
     49     }
     50     if(dfs3(x*y, z)) {
     51         ans[3] = x, ans[4] = y, ans[11] = x*y;
     52         s[2] = '*';
     53         return true;
     54     }
     55     if(y) {
     56         if(x % y == 0) {
     57             if(dfs3(x/y, z)) {
     58                 ans[3] = x, ans[4] = y, ans[11] = x/y;
     59                 s[2] = '/';
     60                 return true;
     61             }
     62         }
     63     }
     64     return false;
     65 }
     66 bool dfs1(int x, int y, int n, int m) {
     67     if(x < y) swap(x, y);
     68     if(dfs2(x+y, n, m)) {
     69         ans[5] = x, ans[6] = y, ans[10] = x+y;
     70         s[3] = '+';
     71         return true;
     72     }
     73     if(dfs2(x-y, n, m)) {
     74         ans[5] = x, ans[6] = y, ans[10] = x-y;
     75         s[3] = '-';
     76         return true;
     77     }
     78     if(dfs2(x*y, n, m)) {
     79         ans[5] = x, ans[6] = y, ans[10] = x*y;
     80         s[3] = '*';
     81         return true;
     82     }
     83     if(y) {
     84         if(x % y == 0) {
     85             if(dfs2(x/y, n, m)) {
     86                 ans[5] = x, ans[6] = y, ans[10] = x/y;
     87                 s[3] = '/';
     88                 return true;
     89             }
     90         }
     91     }
     92     return false;
     93 }
     94 void print() {
     95     cout<<ans[5]<<s[3]<<ans[6]<<"="<<ans[10]<<endl;
     96     cout<<ans[3]<<s[2]<<ans[4]<<"="<<ans[11]<<endl;
     97     cout<<ans[1]<<s[1]<<ans[2]<<"=24";
     98 }
     99 int main() {
    100     scanf("%d%d%d%d", &a, &b, &c, &d);
    101     if(dfs1(a, b, c, d)) {
    102         flag = 1;
    103         print();
    104         return 0;
    105     }
    106     if(dfs1(a, c, b, d)) {
    107         flag = 1;
    108         print();
    109         return 0;
    110     }
    111     if(dfs1(a, d, b, c)) {
    112         flag = 1;
    113         print();
    114         return 0;
    115     }
    116     if(dfs1(b, c, a, d)) {
    117         flag = 1;
    118         print();
    119         return 0;
    120     }
    121     if(dfs1(b, d, a, c)) {
    122         flag = 1;
    123         print();
    124         return 0;
    125     }
    126     if(dfs1(c, d, a, b)) {
    127         flag = 1;
    128         print();
    129         return 0;
    130     }
    131     if(!flag) printf("No answer!");
    132     return 0;
    133 }

    但数据‘1 3 5 7’过不了qwq

    但luogu数据水我能过qwq

  • 相关阅读:
    Jmeter中的几个重要测试指标释义
    接口测试考虑
    树Hash学习笔记
    kali linux主题美化
    Kali Linux 终端字体配色
    解决github无法打开
    Python requests数据的content和text的区别
    Python+adb操作移动端自动化测试
    linux后台运行python程序
    洛谷P2791 幼儿园篮球题 另解
  • 原文地址:https://www.cnblogs.com/Hwjia/p/9917548.html
Copyright © 2011-2022 走看看