zoukankan      html  css  js  c++  java
  • HDOJ骨头的诱惑

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    
    char a[10][10];
    int n,m,t,dx,dy,esc,t1;
    int work[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
    void dfs(int si,int sj,int t1)
    {
       int i,temp;
       if(si>n||sj>m||si<=0||sj<=0) return;
       if(si==dx&&sj==dy&&t1==t) {esc=1;return;}
       temp=(t-t1)-abs(si-dx)-abs(sj-dy);//剪枝
       if(temp<0||temp%2) return;
       for(i=0;i<4;i++)
       {
    	   if(a[si+work[i][0]][sj+work[i][1]]!='X')
    	   {
    		   a[si+work[i][0]][sj+work[i][1]]='X';
    		   dfs(si+work[i][0],sj+work[i][1],t1+1);
    		   if(esc) return;
    		   a[si+work[i][0]][sj+work[i][1]]='.';
    	   }
       }
       return;
    }
    int main()
    {
    	int i,j,wall,si,sj;
    	while(cin>>n>>m>>t)
    	{
    		if(n==0&&m==0&&t==0) break;//剪枝
    		wall=0;char temp;
    		scanf("%c",&temp);
    		for(i=1;i<=n;i++)
    		{
    			for(j=1;j<=m;j++)
    			{
    				cin>>a[i][j];
    				if(a[i][j]=='D') {dx=i;dy=j;}
    				if(a[i][j]=='S') {si=i;sj=j;}
    				if(a[i][j]=='X') wall++;
    			}
    		}
    		if(n*m-wall<=t) {cout<<"NO"<<endl;continue;}
    		esc=0;t1=0;
    		a[si][sj]='X';
    		dfs(si,sj,0);
    		if(esc) cout<<"YES"<<endl;
    		else cout<<"NO"<<endl;
    	}
    	return 0;
    }
    
    

  • 相关阅读:
    bootstrap
    Bootstrap面试题
    h5+css3 考试题
    less安装与使用
    css3(四)响应式 Web 设计 - 媒体查询
    css3(三)弹性布局
    css3(三)多列布局
    JavaScriptAPI初识
    Bootstrap面试题
    BS初识
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13271322.html
Copyright © 2011-2022 走看看