西西河

主题:【原创】一个游戏引发的无血案 -- Highway

共:💬45 🌺54
分页树展主题 · 全看首页 上页
/ 3
下页 末页
    • 家园 俺除了佩服,还有几十个弱智问题...

      俺的考试压力现在依然还有,所以时不时地问上几个弱智问题,望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)! 怎么回事?

      • 家园 空循环会被编译器优化掉

        你的思路跟我的一样,这是我的代码

        另外你用的是C++,不是C

        链接出处

        • 家园 C 还是 C++

          呵呵,俺自从用了cout以后,再也不想玩纯C的Code了(所以俺的java水平可想而知);如果说俺用的是C++,俺从来没有写过一个class。所以俺的Code你们看了千万不要笑

          俺的算法和spin兄的不谋而合。正在考虑东方射日兄说得2+2的情形,还有highway兄说得谁除谁的问题(谁减谁俺用负的24判断,不知对否?)。

          另外,当年俺交java作业的时候,编得昏天黑地,助教每次都说,面壁啊,你写得这十几行Code是有现成的标准库的。怎么没人告诉俺?

          还有,同年有次俺交LDAP作业的时候,编得昏天黑地,助教对俺说,面壁啊,你写得是C++啊。俺说俺不是计算机系的,这作业俺花了3个晚上(别人最多2个小时)。后来俺不服,问同学要C代码,一看,只有2个函数!俺问,那其它的程序框架和其它的函数呢?云:老师发到我们的信箱里啦。怎么又没人告诉俺?

          所以俺对人说,java程序员就是岳云,手使擂鼓尩金锤,一锤下去,管你头碎胸瘪,反正你嗝屁;C程序员就是独孤求败,能用手中的剑挑断你的神经末梢;C++程序员就是赵云,掌中镔铁点钢枪,万马军中取上将首级。

          这就是俺面壁,龌龊并快乐着。

      • 家园 全循环就是把一副扑克牌所有的4张牌搭配算一次

        注意,这个组合不是一个传统意义上的52张牌取4张的概率问题。因为在这个游戏中,牌的花色不重要。也就是说3个A搭配一个黑桃2和搭配一个红桃2是一样的。到底4张牌能给出多少种不同的组合还有点小trick在里面,不是想象的那么简单。

        你的那个问题可能是这样的。那段code有没有对程序最后结果没有影响,编译器可能给你自动删除了。以前在微软的Visual J++我就见过这样的东西。所以你在循环体里面可以做一些简单计算,把结果最后cout一下,这样编译器就不会给你删除了。

        不知道这个“弱智”的解答对你是不是有所帮助?

    • 家园 跟着佩服下:有没有可能象MATLAB一样第一次跑,慢,接着跑就快

      因为MATLAB是解释性语言,第一次跑的时候,速度比较慢,需要解释编译,接下去跑的时候,可以利用前面的已经缓存了的东西,速度就快了。

      不过,你那个看起来这种可能性太小。

    • 家园 专业啊专业,送花一朵

      Java有2年没碰了,都快忘了,轧老大什么时候科普一下JVM 6?

      看到结尾处,算8张牌,忽然想起以前学过的人工智能的课,感觉又多了一个实例。

    • 家园 除了佩服,都无话可说了。呵呵。牛人。
    • 家园 好厉害,这个算24点的程序变成测试java和系统性能的

      一定要花了。highway老大能不能介绍点java6的features,我看得都流口水了。

    • 家园 花!

      Only if every software can be re-coded and re-tested like you did!!!

      • 花!
        家园 Don't let our bosses see this...

        Otherwise we'll all be like ants on a hotpot...

    • 家园 【文摘】牛人就是牛人,没办法!

      太专业了,太敬业了!!!

    • 家园 哪位再多贴几个类似的游戏,累死老轧
    • 家园 花顶!

      牛人就是牛人

    • 家园 旗帜鲜明地花并遗憾

      花!为小事入手,踏实研究。

      遗憾!铁老大不让连续送花...

分页树展主题 · 全看首页 上页
/ 3
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河