程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 3032 Nim or not Nim? (博弈之求SG函數)

HDU 3032 Nim or not Nim? (博弈之求SG函數)

編輯:C++入門知識


題意:經典Nim博弈游戲變換,給你n堆石子pi,每堆有pi個石子,

Alice和Bob輪流取石子,每次可以從任意一堆中拿走任意個石子,也可以將某一堆石子分成兩個小堆

(每堆石子個數必須不能為0),先拿完者獲勝


思路:求SG函數後找規律;


SG函數定義及求法:點擊打開鏈接


#include
#include
#include
#include
#include
#include
#include
#include 
#include 
#include
#include
using namespace std;
#define INF 1e8
#define eps 1e-8
#define LL long long
#define maxn 1000001
#define PI acos(-1.0)

int sg[maxn],vis[maxn];

void SG()
{
	sg[0]=0;
	sg[1]=1;
	for(int i=2;i<100;i++)
	{
		memset(vis,0,sizeof(vis));
		for(int j=i-1;j>=0;j--)
		{
			vis[sg[j]]=1;
		}
		for(int j=1;j

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved