1. 程式人生 > >藍橋杯 (在矩陣中擺放最多的馬相互不攻擊)

藍橋杯 (在矩陣中擺放最多的馬相互不攻擊)

蒜頭君喜歡下棋。最近它迷上了國際象棋。國際象棋的棋盤可以被當做一個 8\times 88×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 \times 8

8×8 的棋盤上怎麼放馬,但如果棋盤變為 n \times mn×m 的,蒜頭君就不懂了。他希望你來幫忙他計算一下究竟能放多少匹馬。

輸入格式

共一行,兩個整數nnmm(1 \leq n , m \leq 10001n,m1000),代表棋盤一共有 nn 行 mm列。

輸出格式

輸出一個整數,代表棋盤上最多能放的馬的數量。

樣例輸入1

2 4

樣例輸出1

4

樣例輸入2

3 4

樣例輸出2

6

關於提示


當棋盤只有一行時,棋盤上全放上棋子即可。當棋盤只有兩行時,參考如下放的方法:••OOXXOOXXOO.....OOXXOOXXOO.....••即放兩排空兩排。••其它情況下,參考國際象棋棋盤的顏色,馬跳一次一定會從白色格子變為黑色,因此把所有馬放在同一顏色下即可。

相關推薦

藍橋 (在矩陣擺放相互攻擊)

蒜頭君喜歡下棋。最近它迷上了國際象棋。國際象棋的棋盤可以被當做一個 8\times 88×8 的矩陣,棋子被放在格子裡面(不是和中國象棋一樣放在線上)。蒜頭君特別喜歡國際象棋裡面的馬,馬的移動規則是這樣

Python找出陣列或者矩陣每行/每列個數的成員,及出現的次數

 在Python中,我們可以用scipy.stats.mode函式尋找陣列或者矩陣每行/每列中最常出現成員以及出現的次數 。 from scipy.stats import mode def mode(a, axis=0, nan_policy='propagate'

解決矩陣一行含有個相同大值的鞍點查詢法

package classPack; import bascPack.ArrayTest; import java.util.*; /** * Created by cloud on 2017/7/9. */ public class TwoDimensionTest

數組出現的數,以及接口 Map.Entry<K,V>

int try tools pub length rem value contains span 1 package test.tools; 2 3 import java.util.Collection; 4 import java.util.Collecti

獲取在一個數組出現的字符及其所在的位置

blog 數組 body asc i++ cnblogs attr 次數 獲取 獲取在一個數組中出現最多的字符、個數及其所在的位置 <!DOCTYPE html> <html> <head> <title>一個數組中,出現

[leetcode]508. Most Frequent Subtree Sum二叉樹出現的值

def class keyset fault 二叉 post 節點 helper list 遍歷二叉樹,用map記錄sum出現的次數,每一個新的節點都統計一次。 遍歷完就統計map中出現最多的sum Map<Integer,Integer> map = new

ALGO_86(藍橋) 矩陣乘法

sin 兩個 讀取 urn freopen 整數 描述 cal 結果 問題描述   輸入兩個矩陣,分別是m*s,s*n大小。輸出兩個矩陣相乘的結果。 輸入格式   第一行,空格隔開的三個正整數m,s,n(均不超過200)。   接下來m行,每行s個空格隔開的整數,表示矩陣A

329 Longest Increasing Path in a Matrix 矩陣長遞增路徑

can you 遞增 c++ direct log integer ret pre Given an integer matrix, find the length of the longest increasing path.From each cell, you can

Python面試題 —— 計算列表出現次的字元

題目: 給你一個其中包含不同的英文字母和標點符號的文字,你要找到其中出現最多的字母,返回的字母必須是小寫形式, 當檢查最想要的字母時,不區分大小寫,所以在你的搜尋中 “A” == “a”。 請確保你不計算標點符號,數字和空格,只計算字母。 如果你找到 兩個或兩個以上的具有相同的頻率的字母,

隨機矩陣尋找大元素值

1.問題描述 產生一個M*N的隨機數矩陣(數值範圍在1~100之間),找出其中的最大值元素。 2.程式設計分析 這裡的隨機矩陣產生可以用隨機函式rand()來產生,然後定義一個變數max,初值為0,接著遍歷陣列當遇到比max大的元素值時,把

【閒談】如何統計字串出現的字母與個數

前言 閒來無事,窮折騰。最近我朋友在找工作,遇到一些面試題,或者遇到一些問題會及時跟我討論。我則作為他的幕後軍師,為他出謀劃策。接下來我分享給大家一道簡單的面試題。 題目 統計字串中出現最多的字母與個數? 分析 1、驗證資料是否字串 2、字串轉換為陣列 3、統計字串出現的次數 例: v

7-5 求一批整數出現的個位數字

輸入格式:輸入在第1行中給出正整數NNN(≤1000\le 1000≤1000),在第二行中給出NNN個不超過整型範圍的非負整數,數字間以空格分隔。 輸出格式:在一行中按格式“M: n1 n2 …”輸出,其中M是最大次數,n1、n2、……為出現次數最多的個位數字,按從小到大的順序排列。數字間

統計字串出現的字元的出現次數!

function count (str) { let obj = {}; for(let i=0;i<str.length;i++){ if(obj[str.charAt(i)]==undefined){ obj[

字串出現的字元

var str = "nininihaoa"; var o = {}; for (var i = 0, length = str.length; i < length; i++) {     var chars = str.charAt(i);     if (

leetcode 矩陣長遞增路徑 python【動態規劃】

題目描述 **分析:**假設最長路徑終點的是[i][j],則其最長路徑值為nums1[i][j],則nums1[i][j]等於它上下左右四個數中,比它小的數中最長路徑值最大的那一個+1 因此,我們可以從矩陣的最小值出發,其最長路徑值為1,然後計算第二小的數的最長路徑值,以此類推 cla

尋找01矩陣大子矩陣--華為OJ機試--java語言版

題目描述: 在一個M * N的矩陣中,所有的元素只有0和1,從這個矩陣中找出一個面積最大的全1子矩陣,所謂最大是指元素1的個數最多。 輸入: 輸入可能包含多個測試樣例。 對於每個測試案例,輸入的第一行

[LeetCode] Longest Increasing Path in a Matrix 矩陣長遞增路徑

Given an integer matrix, find the length of the longest increasing path. From each cell, you can either move to four directions: left, right, up or down

藍橋之演算法訓練 小乘積(基本型)

題目:演算法訓練 最小乘積(基本型) 問題描述   給兩組數,各n個。   請調整每組數的排列順序,使得兩組資料相同下標元素對應相乘,然後相加的和最小。要求程式輸出這個最小值。   例如兩組數分別為:1 3  -5和-2 4 1   那麼對應乘積取和的

(LeetCode 329)矩陣長遞增路徑 [簡單DP & 公式:dp[x][y] = dp[xx][yy] + 1]

329. 矩陣中的最長遞增路徑 給定一個整數矩陣,找出最長遞增路徑的長度。 對於每個單元格,你可以往上,下,左,右四個方向移動。 你不能在對角線方向上移動或移動到邊界外(即不允許環繞)。 示例 1: 輸入: nums = [ [9,9,4], [6,6,8], [2,1,1]

Apple允許向TestFlight測試服務新增1000名外部測試者

Apple已經宣佈 其旗下的TestFlight Beta測試服務現在允許開發者通過iTunesConnect新增最多1000名外部測試者。 Apple起初是在WWDC 2014大會上宣佈他們從 Burstly收購 的TestFlight會融合到iOS開發工具套件中。