主题:【原创】一个游戏引发的无血案 -- Highway
俺的考试压力现在依然还有,所以时不时地问上几个弱智问题,望highway兄和众河友多多担待。
我的游戏算法大概是这样的:
1) 任意给四个1-13之间的数字
2) 求出所有的排列来。
3) 把加减乘除运算符加进去,列出所有可能的计算表达式(优先级也要考虑)
4) 对每个表达式进行求解,如果是24,那么这个表达式就是一个答案。
对于四张牌,全循环一次40秒左右
俺一直没好意思问,怎样才算一次全循环?就是说把所有的可能性都找一遍吗?俺的C程序也能给出答案(嘿嘿,有些输出只有俺能看懂)但给出答案怎么会比40秒要快很多?!
highway兄和众河友们不妨解决一下我前段碰到的这样一个问题:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
clock_t start,end;
start=clock();
cout<<start<<'\n';
for (int i=0;i<10000;i++)
{ for (int i=0;i<10000;i++); }
end=clock();
cout<<end<<'\n';
cout<<"ticks= "<<(end-start)<<'\n';
cout<<CLOCKS_PER_SEC<<'\n';
}
这2个for空循环在cygwin编译器上运行,41秒!而在Microsoft VC++ 2005 上,即使再添几个0,
for (int i=0;i<10000000;i++)
{ for (int i=0;i<10000000;i++); }
也是0秒(release)! 怎么回事?
- 相关回复 上下关系8
🙂2+2应该是包括的 CatOH 字79 2007-03-05 20:21:11
🙂好办法,花 CatOH 字58 2007-03-05 19:14:08
😄大方向不错。不过问题可能要稍微复杂一些。 Highway 字169 2007-03-05 19:00:50
🙂俺除了佩服,还有几十个弱智问题...
🙂空循环会被编译器优化掉 1 泰让 字108 2007-03-06 06:53:19
😁C 还是 C++ 面壁 字989 2007-03-06 15:08:36
😉全循环就是把一副扑克牌所有的4张牌搭配算一次 1 Highway 字491 2007-03-05 18:38:14
🙂真牛! 面壁 字134 2007-03-06 15:15:53