2018 蓝桥杯省赛 B 组模拟赛(五) H. 程序设计:蒜头君下棋

蒜头君喜欢下棋。最近它迷上了国际象棋。国际象棋的棋盘可以被当做一个 8×8 的矩阵,棋子被放在格子里面(不是和中国象棋一样放在线上)。

蒜头君特别喜欢国际象棋里面的马,马的移动规则是这样的:横着走两步之后竖着走一步,或者横着走一步之后竖着走两步。例如,一匹马在 (3,3)(3,3) 的位置,则它可以到达的地方有 (1,2)(1,2)(2,1)(2,1)(1,4)(1,4)(4,1)(4,1)(5,2)(5,2)(2,5)(2,5)(5,4)(5,4)(4,5)(4,5) 八个地方。蒜头君想要把整个棋盘都放上马,并且让这些马不能相互攻击(即任何一匹马不能走一步之后就到达另一匹马的位置)。蒜头君当然知道在 8×8 的棋盘上怎么放马,但如果棋盘变为 n×m 的,蒜头君就不懂了。他希望你来帮忙他计算一下究竟能放多少匹马。

输入格式

共一行,两个整数nm(1n,m1000),代表棋盘一共有 n 行 m列。

输出格式

输出一个整数,代表棋盘上最多能放的马的数量。

样例输入1
2 4
样例输出1
4
样例输入2
3 4
样例输出2

6

#include<iostream>
using namespace std;
const int maxn=1010;
int a[maxn][maxn];

int n,m,x,y,count=0;
int main()
{
       cin>>n>>m;
       if(n>m)
       {
              swap(n,m);
       }
       if(n==1)
       {
               count=m;
       }
       else if(n==2)
       {
        if(m%4==3)
        {
                count=(m/4)*4+4;
        }
        else{
                count=(m/4)*4+(m%4)*2;
        }

       }
       else{
       count=(n*m+1)/2;
       }
       cout<<count<<endl;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值