3283. 食堂的座位

单点时限: 2.0 sec

内存限制: 256 MB

xxtt 上大学以来一直在苦恼一件事情,就是学校食堂里,互不认识的同学,或者是异性同学之间,都不愿意坐的很近。于是,原本食堂里那么多的座位,却常常让他找不到座位。

假设食堂里的座位是一个 N×M 的矩阵,当一个座位上有人坐着的同时,他的前后左右(即矩阵的上下左右)将不会再有人愿意去坐。xxtt 在食堂吃不到饭的同时,很好奇,如果大家遵守上面的规定,最多能有多少人能同时吃饭。

输入格式
只有两个整数 N,M (1≤N≤9,1≤M≤9)。

输出格式
输出一个数,表示这个食堂最多能做多少人。

样例
input
2 2
output
2
input
6 4
output
12

/*
思路:bfs标记
*/
#include<iostream>
#include<queue>
using namespace std;
int x[4]={1,-1,0,0};
int y[4]={0,0,1,-1};
int visit[9][9]={0};
int m,n;
bool text(int a,int b)
{
	if(a<0||b<0||a>=m||b>=n||visit[a][b])
	return false;
	return true;
}
int main()
{
	cin>>m>>n;
	int ans=0;
	for(int i = 0; i < m; i++)
	{
		for(int j = 0; j < n; j++)
		{
			if(visit[i][j]==0)
			{
				ans++;
				for(int z=0; z<4; z++)
				{
					int a=x[z]+i;
					int b=y[z]+j;
					if(text(a,b))
					{
						visit[a][b]=1;
					}
				}
			}
		}
	}
	cout<<ans;
	return 0;
}
数学找规律:
int sum=(m/2)*n;
if(m%2==1&&n%2==1){
sum+=n/2+1;
}
else if(m%2==1&&n%2==0){
sum+=n/2;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值