C++编程之美-代码清单1-19

代码清单1-19

bool nim(int n, int m) 
{
     double a, b;
     a = (1 + sqrt(5.0)) / 2;
     b = (3 + sqrt(5.0)) / 2;
     if(n == m)			  // 两堆石头数量相同
     {
          return true;
     }
     if(n > m)
     {
          swap(n, m);  // 我们假设所有的状态<x,y>中x<=y,如果n>m,则交换二者
     }
     if(n == (long)floor((m-n)*a))    // floor为取下整数的操作符
     {
          return false;
     }
     else
     {
          return true;
     }
}
发布了1184 篇原创文章 · 获赞 951 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_42528266/article/details/104027271