nim 求动归求G(X).
代码:
#include<iostream>
#include<fstream>
using namespace std;
int a[101];
int dp[10001];
int v[10001];
int n,m;
int solve(int s){
int i;
if(v[s]==1) return dp[s];
v[s]=1;bool v2[20001]={0};
for(i=1;i<=n;i++)
if(s>=a[i])
{
int j=solve(s-a[i]);
v2[j]=1;
}
dp[s]=0;
for(i=0;;i++)
if(v2[i]==0)
{
dp[s]=i;
break;
}
return dp[s];
}
void read(){
// ifstream cin("in.txt");
int i,j,k,s,t;
while(1){
// cin>>n;
scanf("%d",&n);
if(n==0) return;
memset(v,0,sizeof(v));
for(i=1;i<=n;i++)
//cin>>a[i];
scanf("%d",&a[i]);
//cin>>m;
scanf("%d",&m);
v[0]=1;
for(s=1;s<=m;s++)
{
//cin>>k;
scanf("%d",&k);
j=0;
for(i=1;i<=k;i++)
{
//cin>>t;
scanf("%d",&t);
j^=solve(t);
}
if(j==0)
cout<<'L';
else
cout<<'W';
}
cout<<endl;
}
}
int main(){
read();
return 0;
}