UVa 11538 象棋中的皇后】的更多相关文章

https://vjudge.net/problem/UVA-11538 题意: n×m的棋盘,有多少种方法放置两个相互攻击的皇后? 思路: 这两个皇后互相攻击的方式只有3种,在同一行,在同一列,或在同一对角线.因为每种情况没有交集,所以可以用加法原理. 先考虑同一行,每一行都有种放法,共有n行,所以就是n×m×(m-1). 列与行的情况是相同的. 考虑对角线,如图,从左到右对角线的长度为1,2,3,...n-1,n,n...n(m-n+1个n),n-1,n-2,...2,1 因为还有另一个对角…
30201象棋中的皇后 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 在n×m的棋盘上放置两个相互攻击的皇后,总共有多少种不同的方案?例如当n=2,m=2时答案为12,当n=100,m=223时答案为10907100.说明:如果同一个棋盘上的某一行,或某一列,或某一斜线(两个方向上的对角线)上有两个皇后就会相互攻击.当n=2,m=2时,其放置方案如下图所示:                          输入 一行,包…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2533 Root 11538 - Chess Queen Time limit: 2.000 seconds You probably know how the game of chess is played and how chess queen operates. Two chess qu…
百度测试部2015年10月份的面试题之——八皇后. 八皇后问题的介绍在此.以下是用递归思想实现八皇后-N皇后. 代码如下: using System;using System.Collections.Generic; namespace QueensSolution { class Program { ; static void Main(string[] args) { int n = Int32.Parse(Console.ReadLine()); List<int> queen = ne…
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2533 三个方向, 横,竖,对角线~ #include<iostream> #include<cstdio> using namespace std; int main() { long long int n,m; while(scanf("%lld%l…
题目链接 题意:给出m行n列的棋盘,当两皇后在同行同列或同对角线上时可以互相攻击,问共有多少种攻击方式. 分析:首先可以利用加法原理分情况讨论:①两皇后在同一行:②两皇后在同一列:③两皇后在同一对角线( / 或 \ ): 其次利用乘法原理分别讨论: ①同一行时(A),先选某一行某一列放置其中一个皇后,共m*n种情况:其次在选出的这一行里的其他n-1个位置中选一个放另一个皇后:共m*n*(n-1)种情况: ②同一列时(B)情况相同,为n*m*(m-1)种情况: ③同一对角线(D)上时,先讨论 /…
考虑把皇后放在同一横排或者统一纵列,答案为nm(m-1)和nm(n-1),显然. 考虑同一对角线的情况不妨设,n<=m,对角线从左到右依次为1,2,3,...,n-1,n,n,n,...,n(m-n+1个n),n-1,n-2,...,2,1 还有另一个方向的对角线,所以算出来之后要乘二. 即答案为2(2*Σ(i to n-1) (i(i-1))    +   (m-n+1)n(n-1)) Σ(i to n-1) (i(i-1))怎么算呢? 可以拆成Σi² - Σi , i²的前缀和公式我就不推了…
https://vjudge.net/problem/UVA-11538#author=0 将两个不同的皇后放入N*M棋盘中,问使得二者可以相互攻击的方案个数.有可能在同一行,同一列,同一对角线,分开讨论. 令ans=A(N,M)+B(N,M)+D(N,M);  显然 A(N,M)=N*M*(M-1), B(N,M)=A(M,N)=N*M*(N-1).对于对角线我们只考虑一面的然后乘以二就好了, 观察可得对角线长度的变化是1,2,3..n,n,n....3,2,1 ,其中n的个数是n-m+1个,…
题意:给定一个n*m的棋盘,那么问你放两个皇后相互攻击的方式有多少种. 析:皇后攻击,肯定是行,列和对角线,那么我们可以分别来求,行和列其实都差不多,n*A(m, 2) + m*A(n, 2), 这是行和列的,然后再算对角线,对角线是从2-min(m, n)的, 然后就能算出来. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <strin…
TeX is a typesetting language developed by Donald Knuth. It takes source text together with a few typesetting instructions and produces, one hopes, a beautiful document. Beautiful documents use `` and " to delimit quotations, rather than the mundane …