【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

posted @ 2018-11-06 19:54  _Hwjia  阅读(401)  评论(0编辑  收藏  举报
                       ::                              ::
                      :;J7, :,                        ::;7:
                      ,ivYi, ,                       ;LLLFS:
                      :iv7Yi                       :7ri;j5PL
                     ,:ivYLvr                    ,ivrrirrY2X,
                     :;r@Wwz.7r:                :ivu@kexianli.
                    :iL7::,:::iiirii:ii;::::,,irvF7rvvLujL7ur
                   ri::,:,::i:iiiiiii:i:irrv177JX7rYXqZEkvv17
                ;i:, , ::::iirrririi:i:::iiir2XXvii;L8OGJr71i
              :,, ,,:   ,::ir@mingyi.irii:i:::j1jri7ZBOS7ivv,
                 ,::,    ::rv77iiiriii:iii:i::,rvLq@huhao.Li
             ,,      ,, ,:ir7ir::,:::i;ir:::i:i::rSGGYri712:
           :::  ,v7r:: ::rrv77:, ,, ,:i7rrii:::::, ir7ri7Lri
          ,     2OBBOi,iiir;r::        ,irriiii::,, ,iv7Luur:
        ,,     i78MBBi,:,:::,:,  :7FSL: ,iriii:::i::,,:rLqXv::
        :      iuMMP: :,:::,:ii;2GY7OBB0viiii:i:iii:i:::iJqL;::
       ,     ::::i   ,,,,, ::LuBBu BBBBBErii:i:i:i:i:i:i:r77ii
      ,       :       , ,,:::rruBZ1MBBqi, :,,,:::,::::::iiriri:
     ,               ,,,,::::i:  @arqiao.       ,:,, ,:::ii;i7:
    :,       rjujLYLi   ,,:::::,:::::::::,,   ,:i,:,,,,,::i:iii
    ::      BBBBBBBBB0,    ,,::: , ,:::::: ,      ,,,, ,,:::::::
    i,  ,  ,8BHWJBBBBBi     ,,:,,     ,,, , ,   , , , :,::ii::i::
    :      iZMOMAQBBM2::::::::::,,,,     ,,,,,,:,,,::::i:irr:i:::,
    i   ,,:;u0MBMOG1L:::i::::::  ,,,::,   ,,, ::::::i:i:iirii:i:i:
    :    ,iuUuuXUkFu7i:iii:i:::, :,:,: ::::::::i:i:::::iirr7iiri::
    :     :rk@Yizero.i:::::, ,:ii:::::::i:::::i::,::::iirrriiiri::,
     :      5BMBBBBBBSr:,::rv2kuii:::iii::,:i:,, , ,,:,:i@petermu.,
          , :r50EZ8MBBBBGOBBBZP7::::i::,:::::,: :,:,::i;rrririiii::
              :jujYY7LS0ujJL7r::,::i::,::::::::::::::iirirrrrrrr:ii:
           ,:  :@kevensun.:,:,,,::::i:i:::::,,::::::iir;ii;7v77;ii;i,
           ,,,     ,,:,::::::i:iiiii:i::::,, ::::iiiir@xingjief.r;7:i,
        , , ,,,:,,::::::::iiiiiiiiii:,:,:::::::::iiir;ri7vL77rrirri::
         :,, , ::::::::i:::i:::i:i::,,,,,:,::i:i:::iir;@Secbone.ii:::