C家家
游戏编程之道
posts - 4,  comments - 1,  trackbacks - 0
     摘要: 极大极小搜索策略一般都是使用在一些博弈类的游戏之中: 这样策略本质上使用的是深度搜索策略,所以一般可以使用递归的方法来实现。在搜索过程中,对本方有利的搜索点上应该取极大值,而对本方不利的搜索点上应该取极小值。 极小值和极大值都是相对而言的。 在搜索过程中需要合理的控制搜索深度,搜索的深度越深,效率越低,但是一般来说,走法越好。 极大极小搜索可以分开写,也可以放在一起写。 主要的算法步骤如下: ...  阅读全文
posted @ 2011-07-10 21:42 菜青虫 阅读(1953) | 评论 (0)编辑 收藏
 1int y;
 2int Search( int left, int right )
 3{
 4    if( left > right )
 5        return -1;
 6    else
 7    {
 8        int mid = ( left + right ) / 2;
 9        if( a[ mid ] == y )
10            return mid;
11        else if( a[ mid ] > y )
12            return Search( left, mid - 1 );
13        else
14            return Search( mid + 1, right );
15    }

16}
posted @ 2009-09-12 14:15 菜青虫 阅读(211) | 评论 (0)编辑 收藏

  目前PC机上流行的最快的圆周率计算程序是PiFast。它除了计算圆周率,还可以计算e和sqrt(2)。PiFast可以利用磁盘缓存,突破物理内存的限制进行超高精度的计算,最高计算位数可达240亿位,并提供基于Fabrice Bellard公式的验算功能。
最高记录:12,884,901,372位
时间:2000年10月10日
记录创造者:Shigeru Kondo
所用程序:PiFast ver3.3
机器配置:Pentium III 1G, 1792M RAM,WindowsNT4.0,40GBx2(IDE,FastTrak66)
计算时间:1,884,375秒 (21.8天)
验算时间:29小时

·G++编译器中的运算程序微机WindowsXP中Dev-cpp中的运算程序(30000位)(C++)

 1#include <iostream>
 2#include <fstream>
 3
 4#define N 30010
 5
 6using namespace std;
 7
 8void mult (int *a,int b,int *s)
 9{
10    for (int i=N,c=0;i>=0;i--)
11    {
12        int y=(*(a+i))*b+c;
13        c=y/10;
14        *(s+i)=y%10;
15    }

16}

17
18void divi (int *a,int b,int *s)
19{
20    for (int i=0,c=0;i<=N;i++)
21    {
22        int y=(*(a+i))+c*10;
23        c=y%b;
24        *(s+i)=y/b;
25    }

26}

27
28void incr(int *a,int *b,int *s)
29{
30    for (int i=N,c=0;i>=0;i--)
31    {
32        int y=(*(a+i))+(*(b+i))+c;
33        c=y/10;
34        *(s+i)=y%10;
35    }

36}

37
38bool eqs(int *a,int *b)
39{
40    int i=0;
41    while (((*(a+i))==(*(b+i)))&&(i<=N)) i++;
42    return i>N;
43}

44
45int main(int argc, char *argv[])
46{
47    int lpi[N+1],lls[N+1],lsl[N+1],lp[N+1];
48    int *pi=lpi,*ls=lls,*sl=lsl,*p=lp;
49    for (int i=0;i<=N;i++)*(pi+i)=*(ls+i)=*(sl+i)=*(p+i)=0;
50    memset(pi,0,sizeof(pi));
51    memset(ls,0,sizeof(ls));
52    memset(sl,0,sizeof(sl));
53    memset(p,0,sizeof(p));
54    *pi=*ls=*sl=1;
55    for (int i=1;true;i++)
56    {
57        mult(ls,i,sl);
58        divi(sl,2*i+1,ls);
59        incr(pi,ls,p);
60        if (eqs(pi,p)) break;
61        int *t;
62        t=p;
63        p=pi;
64        pi=t;
65        if (i%50==0) cout << i << "   ";
66    }

67    cout << endl;
68    mult(p,2,pi);
69    ofstream fout("pi.txt");
70    fout << *pi << ".";
71    for (int i=1;i<=N;i++)
72    {
73        fout << *(pi+i);
74        if (i%10==0) fout << " ";
75        if (i%80==0) fout << endl;
76    }

77    return 0;
78}


注:①运行时会有数据弹出,那是无关紧要的,只为了加快了感觉速度;
   ②最后的txt文本里有30010位,其中最后10位可能是错的。

posted @ 2009-04-09 20:35 菜青虫 阅读(476) | 评论 (0)编辑 收藏

      虽然以前在别的网站注册过些博客,但都没认真打理过,现在有了一个真正属于自己的家了,而且邻居们都很热闹,所以想好好经营一下,大家共同进步啊!

posted @ 2007-08-14 00:15 菜青虫 阅读(88) | 评论 (1)编辑 收藏
仅列出标题  

<2019年2月>
272829303112
3456789
10111213141516
17181920212223
242526272812
3456789

常用链接

留言簿(1)

随笔档案

编程之道

搜索

  •  

最新评论

阅读排行榜

评论排行榜