博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3360: [Usaco2004 Jan]算二十四
阅读量:5850 次
发布时间:2019-06-19

本文共 2326 字,大约阅读时间需要 7 分钟。

3360: [Usaco2004 Jan]算二十四

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 6  Solved: 6
[][][]

Description

    写一个程序,给出D(2≤D≤10)个数字,按原顺序在数字间加+,一,×算出24,且不使用括
号.优先级按正常的优先级处理,即先做乘法后做加减法.输出有多少种不同的方案数.

Input

    第1行:一个整数D.
    第2到D+1行:D个整数,在1到50之间.

Output

 
    输出方案总数.

Sample Input

5
6
4
2
8
16

Sample Output

4
样例说明
四种方法分别是6x4x2-8-16,6-4- 2+8+16,6x4-2 x8+16,6×4+2×8-16.

HINT

 

Source

 

题解:直接O(3N)都能过。。。水水哒。。。

(还有话说USACO Orange/Green/Blue 这玩意是什么鬼= =,别告诉我Orange=Bronze阿阿阿QAQ,@bx2k @Recursionsheep @acphile @wnjxyk)

1 const d:array[1..3] of char=('+','-','*'); 2 var 3         i,j,k,l,m,n:longint; 4         a,b:array[0..20] of longint; 5 function calc:int64; 6         var i:longint;a1,a2,a3:int64; 7         begin 8                 a1:=0;a2:=a[1];a3:=1; 9                 for i:=2 to n do10                         begin11                                 case b[i-1] of12                                         1:BEGIN13                                                 if a3=1 then a1:=a1+a2 else a1:=a1-a2;14                                                 a2:=a[i];a3:=1;15                                         end;16                                         2:begin17                                                 if a3=1 then a1:=a1+a2 else a1:=a1-a2;18                                                 a2:=a[i];a3:=2;19                                         end;20                                         3:begin21                                                 a2:=a2*a[i];22                                         end;23                                 end;24                         end;25                 if a3=1 then a1:=a1+a2 else a1:=a1-a2;26                 calc:=a1;27         end;28 procedure dfs(x:longint);inline;29         var i:longint;30         begin31                 if x>=n then32                         begin33                                 if calc=24 then inc(l);34                                 exit;35                         end;36                 for i:=1 to 3 do37                         begin38                                 b[x]:=i;39                                 dfs(x+1);40                         end;41         end;42 begin43         readln(n);44         for i:=1 to n do readln(a[i]);45         l:=0;46         dfs(1);47         writeln(l);48 end.

 

转载于:https://www.cnblogs.com/HansBug/p/4394069.html

你可能感兴趣的文章
php使用qr生成二维码
查看>>
集成spring3、hibernate4、junit
查看>>
URL与ASCII
查看>>
OpenGL的视图变换
查看>>
Redis.conf 说明
查看>>
我的友情链接
查看>>
js 将json字符串转换为json兑现
查看>>
java读取properties配置文件
查看>>
LVS+keepalived负载均衡
查看>>
Start Developing iOS Apps Today系列(六)
查看>>
UITableview中cell重用引起的内容重复的问题
查看>>
stm32 ADC使用 单通道 多通道
查看>>
UVA 10003 Cutting Sticks
查看>>
Windows7操作系统安装教程(图文)
查看>>
Ubuntu下口袋妖怪终端主题安装
查看>>
我的友情链接
查看>>
jquery判断对象是否存在
查看>>
xp重做系统时蓝屏解决方法
查看>>
IOS Core Animation Advanced Techniques的学习笔记(三)
查看>>
神州数码 路由器CHAP认证
查看>>