zoukankan      html  css  js  c++  java
  • zoj 1002解题报告

    第一道dfs,值得纪念

    #include <stdio.h>
    const int max=5;
    char map[max][max];
    int visit[max][max];
    int count,k,maxn,n;
    int judge(int x,int y)
    {
    	int i,j;
    	for(i=x,j=y-1;j>=0;j--)
    	{
    		if(visit[i][j]==1) return 0;
    		else if(map[i][j]=='X') break;
    	}
    	for(j=y,i=x-1;i>=0;i--)
    	{
    		if(visit[i][j]==1) return 0;
    		else if(map[i][j]=='X') break;
    	}
    	return 1;
    }
    void dfs(int k,int count)
    {
    	int xn,yn;
    	if(k==n*n)
    	{
    		if(count>maxn)
    		{
    			maxn=count;
    		}
    		return;
    
    	}
    	else
    	{
    		xn=k/n;
    		yn=k%n;
    		if(visit[xn][yn]==0&&judge(xn,yn)&&map[xn][yn]=='.')
    		{
    			count++;
    			visit[xn][yn]=1;
    			dfs(k+1,count);
    			visit[xn][yn]=0;
    			count--;
    
    		}
    
    		dfs(k+1,count);
    	}
    	
    }
    
    
    int main()
    {
    	int i,j;
    	while(scanf("%d",&n)==1)
    	{
    		if(n==0) break;
    		count=0;
    		k=0;
    		maxn=0;
    		for(i=0;i<n;i++)
    		{
    			getchar();
    			for(j=0;j<n;j++)
    			{
    				scanf("%c",&map[i][j]);
    				visit[i][j]=0;
    			}
    		}
    		dfs(0,0);
    		printf("%d\n",maxn);
    	}
    
    	return 0;
    }


     

  • 相关阅读:
    排序算法整理
    V-REP Plugin 开发
    YAML-CPP
    YAML
    V-REP Remote API
    V-REP Plugin
    结构化方法与面向对象方法的比较
    敏捷软件开发vs传统软件工程
    个人项目-地铁出行路线规划程序
    Week1个人作业
  • 原文地址:https://www.cnblogs.com/lj030/p/3002189.html
Copyright © 2011-2022 走看看