zoukankan      html  css  js  c++  java
  • poj2068

    /***************************************************************\
     *Author:Hu Wenbiao
     *Created Time: Wed 01 Sep 2010 08:28:40 PM CST
     *File Name: main.cpp
     *Description:记忆化搜索
    \***************************************************************/
    //*========================*Head File*========================*\\
    
    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    /*----------------------*Global Variable*----------------------*/
    int n,S,M[22];
    int dp[22][1<<13];//dp[i][j]第i个人在剩余j个石子的情况下他们那组的胜负
    //*=======================*Main Program*=======================*//
    using namespace std;
    
    void dfs(int i,int s){
     if(s==1){
      dp[i][1]=0;//0是负,1是胜
      return;
     }
     int win=0;
     for(int k=min(M[i],s-1);k;k--){//貌似从大到小,快一些
      if(i==n){
       if(dp[1][s-k]==-1)
         dfs(1,s-k);
       if(!dp[1][s-k]){
        win=1;
        break;
       }
      }
      else{
       if(dp[i+1][s-k]==-1)
         dfs(i+1,s-k);
       if(!dp[i+1][s-k]){
        win=1;
        break;
       }
      }
     }
     dp[i][s]=win;
    }
    int main(){
     //freopen("input","r",stdin);
     while(scanf("%d%d",&n,&S)!=EOF&&n){
      n<<=1;
      memset(dp,-1,sizeof(dp));//-1是未处理的标记
      for(int i=1;i<=n;i++)
        scanf("%d",M+i);
      dfs(1,S);
      printf("%d\n",dp[1][S]);
     }
    }
    

  • 相关阅读:
    hdu 1151
    DAG的最小路径覆盖和二分图的最大匹配
    二部图 最小点覆盖集与最大匹配的关系
    sdut 2151
    sdut Emergency
    作业
    Node.prototype.contains
    微博登录
    markdown
    Object.observe
  • 原文地址:https://www.cnblogs.com/Open_Source/p/1904877.html
Copyright © 2011-2022 走看看