张运涛
c++
::
首页
::
联系
::
聚合
::
管理
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
Caution(6)
Progress (5)
心情日记(3)
疑难问题
随笔档案
2010年5月 (2)
2010年4月 (9)
2010年3月 (3)
文章分类
cocoa2d(5)
iphone(27)
iphone 测试(1)
Play(2)
编程练习(4)
多线程编程(1)
飞机游戏小组(3)
技术感想(2)
技术技巧(2)
设计感想(2)
算法学习(4)
维护工作(2)
游戏策划(8)
文章档案
2011年10月 (6)
2011年9月 (3)
2011年8月 (1)
2011年7月 (2)
2011年4月 (1)
2011年3月 (6)
2010年12月 (2)
2010年9月 (1)
2010年8月 (13)
2010年7月 (9)
2010年6月 (1)
2010年5月 (2)
2010年4月 (18)
2010年3月 (10)
2009年10月 (1)
收藏夹
进展状况(1)
Blogs
woaidongmao's blog
40 open source games
aisharing
AKara blog
Asian Jiang的博客
Bring煮义
ieliw blog
iphone developer tips
lonely on the way
vellios blog
yanzhong.lee的博客
程序即人生
大道至简
技术流年
青苹果
禚 老师的iphone开发专栏
子龙山人
--->>一些著名的cocos2d,box2d导文
自由的天空
Game Dev
game music
Mac / IOS Dev
iphone developer
debug on ios device
ihone open source project
iOS Reference
iOS Reference Library
iphone memory
mac soft
macSoft
stackoverflow
Play Iphone
greenpois0n
hotest iphone games in 2010
ifunbox download
ios 4.1 jailbreak
iphone os file system
搜索
最新评论
1. re: 对于codehelp的建议 庄
这个东西不错,我本来也想写一个的,只是一直没时间。
郝
--张运涛
回溯经典-二十四点算法
#include
<
iostream
>
#include
<
string
>
#include
<
cmath
>
using
namespace
std;
const
double
PRECISION
=
1E
-
6
;
const
int
COUNT_OF_NUMBER
=
4
;
const
int
NUMBER_TO_BE_CAL
=
24
;
double
number[COUNT_OF_NUMBER];
string
expression[COUNT_OF_NUMBER];
bool
Search(
int
n)
{
if
(n
==
1
)
{
if
(fabs(number[
0
]
-
NUMBER_TO_BE_CAL)
<
PRECISION)
{
cout
<<
expression[
0
]
<<
endl;
return
true
;
}
else
{
return
false
;
}
}
for
(
int
i
=
0
; i
<
n; i
++
)
{
for
(
int
j
=
i
+
1
; j
<
n; j
++
)
{
double
a, b;
string
expa, expb;
a
=
number[i];
b
=
number[j];
number[j]
=
number[n
-
1
];
expa
=
expression[i];
expb
=
expression[j];
expression[j]
=
expression[n
-
1
];
expression[i]
=
'
(
'
+
expa
+
'
+
'
+
expb
+
'
)
'
;
number[i]
=
a
+
b;
if
( Search(n
-
1
) )
return
true
;
expression[i]
=
'
(
'
+
expa
+
'
-
'
+
expb
+
'
)
'
;
number[i]
=
a
-
b;
if
( Search(n
-
1
) )
return
true
;
expression[i]
=
'
(
'
+
expb
+
'
-
'
+
expa
+
'
)
'
;
number[i]
=
b
-
a;
if
( Search(n
-
1
) )
return
true
;
expression[i]
=
'
(
'
+
expa
+
'
*
'
+
expb
+
'
)
'
;
number[i]
=
a
*
b;
if
( Search(n
-
1
) )
return
true
;
if
(b
!=
0
)
{
expression[i]
=
'
(
'
+
expa
+
'
/
'
+
expb
+
'
)
'
;
number[i]
=
a
/
b;
if
( Search(n
-
1
) )
return
true
;
}
if
(a
!=
0
)
{
expression[i]
=
'
(
'
+
expb
+
'
/
'
+
expa
+
'
)
'
;
number[i]
=
b
/
a;
if
( Search(n
-
1
) )
return
true
;
}
number[i]
=
a;
number[j]
=
b;
expression[i]
=
expa;
expression[j]
=
expb;
}
}
return
false
;
}
void
main()
{
for
(
int
i
=
0
;i
<
COUNT_OF_NUMBER;i
++
)
{
char
buffer[
20
];
int
x;
cin
>>
x;
number[i]
=
x;
itoa(x, buffer,
10
);
expression[i]
=
buffer;
}
if
(Search(COUNT_OF_NUMBER))
{
cout
<<
"
Success.
"
<<
endl;
}
else
{
cout
<<
"
Fail.
"
<<
endl;
}
}
posted on 2010-04-11 12:37
张运涛
阅读(648)
评论(0)
编辑
收藏
引用
所属分类:
算法学习
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
贪心经典-地图中最短路径
回溯经典-八皇后
回溯经典-二十四点算法
STL里的算法
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Copyright @ 张运涛
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster