poj 2960
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; }