1. 程式人生 > >NJUST 誰才是最強戰艦!(博弈論-Nim遊戲)

NJUST 誰才是最強戰艦!(博弈論-Nim遊戲)

題目連結:

思路:

就是Nim遊戲裡面的一種情況,最後取的那個人輸。這種情況下是需要考慮孤立堆的情況,就是全部都是1的時候。其他情況就是按照異或值是否為0判斷。

另一種情況是最後取的那個人贏,直接判斷異或值即可。

程式碼:

#include<stdio.h>
#include<string.h>
int main()
{
	int T,i,j,k,n,a[1005],f;
	scanf("%d",&T);
	while(T--)
	{
		f=0;
		scanf("%d",&n);
		int sum=0;
		for(i=1;i<=n;i++)
		{
		 scanf("%d",&a[i]);
		 if(a[i]==1)f++;
		 sum=sum^a[i];	
		}
		if(f<n)
		{
		if(sum>0)printf("Yamato_Saikou!\n");
		else printf("Meidikeji_Shijiediyi!\n");
	   }
	   else 
	   {
   		if(n%2)printf("Meidikeji_Shijiediyi!\n");
   		else printf("Yamato_Saikou!\n");
   	}
	}
}