前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3360: [Usaco2004 Jan]算二十四

3360: [Usaco2004 Jan]算二十四

作者头像
HansBug
发布2018-04-10 17:16:25
6100
发布2018-04-10 17:16:25
举报
文章被收录于专栏:HansBug's Lab

3360: [Usaco2004 Jan]算二十四

Time Limit: 10 Sec  Memory Limit: 128 MB

Submit: 6  Solved: 6

[Submit][Status][Discuss]

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

Orange

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

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

代码语言:javascript
复制
 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 do
10                         begin
11                                 case b[i-1] of
12                                         1:BEGIN
13                                                 if a3=1 then a1:=a1+a2 else a1:=a1-a2;
14                                                 a2:=a[i];a3:=1;
15                                         end;
16                                         2:begin
17                                                 if a3=1 then a1:=a1+a2 else a1:=a1-a2;
18                                                 a2:=a[i];a3:=2;
19                                         end;
20                                         3:begin
21                                                 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         begin
31                 if x>=n then
32                         begin
33                                 if calc=24 then inc(l);
34                                 exit;
35                         end;
36                 for i:=1 to 3 do
37                         begin
38                                 b[x]:=i;
39                                 dfs(x+1);
40                         end;
41         end;
42 begin
43         readln(n);
44         for i:=1 to n do readln(a[i]);
45         l:=0;
46         dfs(1);
47         writeln(l);
48 end.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-04-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3360: [Usaco2004 Jan]算二十四
  • Description
  • Input
  • Output
  • Sample Input
  • Sample Output
  • HINT
  • Source
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档