1. 程式人生 > >網易筆試程式設計題:最多可放蛋糕數(C++)

網易筆試程式設計題:最多可放蛋糕數(C++)

題目:

二貨小易有一個W*H的網格盒子,網格的行編號為0~H-1,網格的列編號為0~W-1。每個格子至多可以放一塊蛋糕,任意兩塊蛋糕的歐幾里得距離不能等於2。
對於兩個格子座標(x1,y1),(x2,y2)的歐幾里得距離為:
( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算術平方根
小易想知道最多可以放多少塊蛋糕在網格盒子裡。

輸入描述:

每組陣列包含網格長寬W,H,用空格分割.(1 ≤ W、H ≤ 1000)

輸出描述:

輸出一個最多可以放的蛋糕數

輸入例子:

3 2

輸出例子:

4

分析:

其實就是一個數學問題,分整除4,整除2,奇數等幾種情況討論即可。蛋糕位置就是間隔每個2*2的正方形的區域。

這裡寫圖片描述

答案:


#include<iostream>
using namespace std;


int main(){

    int W, H, counts = 0;

    cin>>W>>H;

    if(W % 4== 0 || H % 4== 0){

        counts = W*H/2;

    }else if(W % 2== 0 && H % 2== 0
){ counts = (W*H/4+ 1) * 2; }else{ counts = W*H/2+ 1; } cout<<counts<<endl; return 0; }