题目链接:uva 696 - How Many Knights

题目大意:给出一个n * m的网格,计算最多可以放置几个国际象棋中的骑士。

解题思路:分成三类来讨论:

1)min(n, m) == 1, 也就是无论怎么摆也不会影响到其他的骑士。

2)min(n, m) == 2, 这是将网格将网格分成2*4的若干部分,每个部分的前半部分放置骑士,主要注意模4后剩余部分的处理。

3)n *m的网格上间隔摆放(就是对应的黑格子或者白格子)(n * m - 1)/ 2

#include <stdio.h>

int f(int n, int m) {
if (n < m) return f(m, n);
else if (m == 1) return n;
else if (m == 2) {
return (n / 4) * 4 + ((n % 4 > 1) ? 2 : n % 4) * 2;
}
else return (n * m + 1) / 2;
} int main () {
int r, c;
while (scanf("%d%d", &r, &c), r + c) {
printf("%d knights may be placed on a %d row %d column board.\n", f(r, c), r, c);
}
return 0;
}

最新文章

  1. 搭建LNAMP环境(一)- 源码安装MySQL5.6
  2. CSS 定位之绝对与相对
  3. WPF 如何绘制不规则按钮,并且有效点击范围也是不规则的
  4. Java反射特性--获取其他类实例并调用其方法
  5. android 用NineOldAndroid实现的弹出按钮
  6. [ubuntu]中文用户目录路径改英文
  7. SP*
  8. Java Servlet——改进的CGI
  9. MacOS安装phpMyAdmin几点问题
  10. C#学习笔记(三)
  11. CDN调度器HAProxy、Nginx、Varnish
  12. iOS-#ifdef DEBUG代码块介绍
  13. CSS 设计彻底研究(三)深入理解盒子模型
  14. springmvc 之 返回值
  15. Fork/Join-Java并行计算框架
  16. 二、Tomcat配置以及IDEA运行第一个Jsp项目——JavaWeb点滴
  17. python--socket/Socketerver并发/udp
  18. linux基础-系统安装教程篇(centos6.5)
  19. codeforces 813E 主席树
  20. 关于Picasso load本地图片显示失败的探究

热门文章

  1. LR监控linux系统资源
  2. ThinkPHP空操作和空控制器的处理
  3. SpringBoot无法启动,Process finished with exit code 0
  4. SILICA Xynergy-M4 Board -- STM32F417 meets XILINX Spartan-6
  5. php 可以动态的new一个变量类名
  6. docker 图解学习
  7. datagrid在MVC中的运用04-同时添加搜索和操作区域
  8. 解决ElasticSearch5.x中@Field注解之IK分词不能用的问题
  9. JDBC进阶之PreparedStatement执行SQL语句(MySQL)
  10. XCL-Charts画曲线图(CurveChart) 例2