码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 11538【象棋中的皇后】Chess Queen

时间:2015-01-24 11:31:35      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

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;
}

 

UVA 11538【象棋中的皇后】Chess Queen

标签:

原文地址:http://www.cnblogs.com/khbcsu/p/4245572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!