zoukankan      html  css  js  c++  java
  • UVA 11538【象棋中的皇后】Chess Queen-----2015年1月24日

    1.问题描述

      本题主要是讲如何在一个给定的n*m棋盘中放置互相攻击的皇后(处于同一行,或者同一列,或者对角线上的任意两个位置(都不一定两者相邻)),求所能得到互相攻击的皇后的情况。

    2.题意分析

      本题主要考查加法原理和乘法原理的应用。根据题意可知,我们可以氛围以下方法进行分类求解(加法原理):

     (1)处于同一行的相互攻击的皇后种数:

                                               

    (2)处于同一列的相互攻击的皇后种数:

                                                

    (3)处于对角线的相互攻击的皇后种数(我们假设n<=m):

                                                 

    本公式很容易证明得出结果。

    那么最后的结果我们可以归纳为:

                                      

    3.AC代码

    #include<iostream>
    #include<algorithm>//注意头文件的使用
    using namespace std;
    int main()
    {
        long long  n,m;
        while(cin>>n>>m&&n&&m)
        {
            if(n>m)swap(m,n);//swap函数功能强大
            cout<<n*m*(m+n-2)+2*n*(n-1)*(3*m-n-1)/3<<endl;
        }
        return 0;
    }
  • 相关阅读:
    LeetCode之“数学”:Rectangle Area
    HTML5 简介、HTML5 浏览器支持
    Android EditText获取焦点和失去焦点监听事件
    HTML 速查列表
    HTML URL
    HTML 字符实体
    HTML 脚本
    HTML 颜色值
    HTML 颜色名
    HTML 颜色
  • 原文地址:https://www.cnblogs.com/khbcsu/p/4245572.html
Copyright © 2011-2022 走看看