網易2017校園招聘筆試程式題(分田地)

2021-08-07 06:05:56 字數 1793 閱讀 9920

題目描述:

牛牛和 15 個朋友來玩打土豪分田地的遊戲,牛牛決定讓你來分田地,地主的田地可以看成是乙個矩形,每個位置有乙個價值。分割田地的方法是橫豎各切三刀,分成 16 份,作為領導幹部,牛牛總是會選擇其中總價值最小的乙份田地, 作為牛牛最好的朋友,你希望牛牛取得的田地的價值和盡可能大,你知道這個值最大可以是多少嗎?

輸入描述:

每個輸入包含 1 個測試用例。每個測試用例的第一行包含兩個整數 n 和 m(1 <= n, m <= 75),表示田地的大小,接下來的 n 行,每行包含 m 個 0-9 之間的數字,表示每塊位置的價值。

輸出描述:

輸出一行表示牛牛所能取得的最大的價值。

輸入例子:

4 4

3332

3233

3332

2323

輸出例子:

2演算法思路

我已開始想不出來很好的思路,然後瞄了一眼其他人的解答,看了乙個找出最小的,然後合併行和列,直到最終結果是4行4列的思路,雖然我感覺這貪心不正確,然而我想到的窮舉法時間複雜度太高,就把這個思路實現了一下,一如神坑似海,花費了我2小時40分鐘debug+除錯+執行+提交**,結果還不是太。。。。

**如下:

// fentiandi.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

#include

using

namespace

std;

struct pos

pos(int a, int b) :i(a), j(b) {}

};void print(int ** arr, int n, int m)

cout

<< "\n";

}pos arrminpos(int ** arr, int n, int m)

}return minpos;

}int ** newarr(int n, int m)

void delarr(int ** arr, int n, int m)

delete arr;

arr = nullptr;

}int main()

if (n == 4 && m == 4)

else

if (n <= 3 || m <= 3)cout

<< "\nerror input !!!\n";

int tn = n, tm = m;

while (!(tn == 4 && tm == 4))

if (pmin.i < tn - 1)//和下一行合併,判斷是不是最後一行;

}if (tm > 4)//和左右列合併;

if (pmin.j < tm - 1)//和下一行合併,判斷是不是最後一行;

}int min1 = 800000, min2 = 800000, min3 = 800000, min4 = 800000;

print(arr, tn, tm);//測試**;

if (flag1)

if (flag2)

if (flag3)

if (flag4)

switch (choose)

}pos pmin = arrminpos(arr, 4, 4);

cout

<< arr[pmin.i][pmin.j] << endl;

/*for (int i = 0;i < n;++i)

*/fin.close();

return

0;}

網易2017校園招聘筆試題 計算糖果

a,b,c三個人是好朋友,每個人手裡都有一些糖果,我們不知道他們每個人手上具體有多少個糖果,但是我們知道以下的資訊 a b,b c,a b,b c.這四個數值.每個字母代表每個人所擁有的糖果數.現在需要通過這四個數值計算出每個人手裡有多少個糖果,即a,b,c。這裡保證最多只有一組整數a,b,c滿足所...

網易2013校園招聘筆試題

第一部分 必做 計算機基礎類 25分 所有選擇題都是多項選擇 1.2分 假設進棧次序是e1,e2,e3,e4,那可能的出棧次序是 a e2,e4,e3,e1b e2,e3,e4,e1c e3,e2,e4,e1 d e1,e2,e4,e3 2.2分 表示式x a b c d e的字尾表示形式可以是 a...

校園招聘(筆試)

第一次參加公司的校園招聘。週六早上迎著日落,坐著出租去機場,車子外面的風景仍舊,看到朝陽仍然是那麼的美,怪不得有好些人的名字以朝陽為名。到達目的地以後,下著小雨,天氣沒有那麼熱,正好帶的來衣服可以穿著。從機場打車出來,經過很長時間的計程車,終於到了賓館。安排下午的考試的內容。下午到達學校給教室裡面的...