首页 > 其他 > 详细

HDU 4499 Cannon

时间:2015-06-04 20:52:50      阅读:210      评论:0      收藏:0      [点我收藏+]

题意:

思路:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<stdlib.h>
#include<vector>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std;
const int MAXN=10+5;
int n,m,Q,ans;
int mat[MAXN][MAXN];
void dfs(int x, int y, int cnt)
{
	if(x>=n)
	{
		ans=max(ans,cnt);
		return;
	}
	if(y>=m)
	{
		dfs(x+1,0,cnt);
		return;
	}
	if(mat[x][y])
	{
		dfs(x,y+1,cnt);
		return;
	}
	dfs(x,y+1,cnt);
	int t;
	bool flag=false;
	for(t=x-1;t>=0;t--)
		if(mat[t][y])
			break;

	for(int i=t-1;i>=0;i--)
	{
		if(mat[i][y])
		{
			if(mat[i][y]== 2)
			{
				flag=true;
			}
			break;
		}
	}
	if(flag)
	{
		return;
	}
	for(t=y-1;t>=0;t--)
	{
		if(mat[x][t])
			break;
	}
	for(int j=t-1;j>=0;j--)
	{
		if(mat[x][j])
		{
			if(mat[x][j]== 2)
			{
				flag=true;
			}
			break;
		}
	}
	if(flag)
	{
		return;
	}
	mat[x][y]=2;
	dfs(x,y+1,cnt+1);
	mat[x][y]=0;
}

int main()
{
	while(scanf("%d %d %d",&n,&m,&Q)!=EOF)
	{
		memset(mat,0,sizeof(mat));
		for(int i=0;i<Q;i++)
		{
		    int x,y;
			scanf("%d %d",&x,&y);
			mat[x][y]=1;
		}
		ans=0;
		dfs(0,0,0);
		printf("%d\n",ans);
	}
	return 0;
}

 

HDU 4499 Cannon

原文:http://www.cnblogs.com/sola1994/p/4552842.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!