南陽OJ 1170 最大的數

2021-10-06 11:55:53 字數 1651 閱讀 4494

時間限制:

1000 ms  |  記憶體限制:65535 kb

難度:3

描述

小明和小紅在打賭說自己數學學的好,於是小花就給他們出題了,考考他們誰nb,題目是這樣的給你n個數

在這n個數之間新增n-1個*或+,使結果最大,但不可以打亂原順序,請得出這個結果

如1 3 5

結果是(1+3)*5=20;最大

可以新增若干個括號,但一定要保證配對,但是每兩個數之間只可能有乙個*或+

數列最前和最後不應有+或乘

小明想贏小紅但是他比較笨,請你幫幫他

輸入多組測試資料以eof結束,每組有乙個n(n<10000),然後有n個正整數a[i](1<=a[i]<=20)

輸出輸出最大的結果由於結果比較大,結果對10086取餘

樣例輸入

3

1 2 3

35 1 2

樣例輸出

9

15

題目解析:

本道題其實就是就是找 1,並分情況處理 1,考慮將其加到它的前邊某個數上或它的下乙個數上。

示例**:

1 #include2 #include3 using namespace std;

4 5 #define max_num 10001

6 7 int num[max_num]; //儲存輸入的數

8 int mark[max_num]; //標記,當不需要計算時,置-1

9 10 int main()

11 24 if (num[n-1] == 1) //如果最後乙個數為1

25

29

30 int tmp;

31 for (int i = 1;i < n-1; i++) //中間的數

32

41

42 if (num[tmp] <= num[i+1] || num[tmp] == 2) //利用貪心思想考慮將這個1加到它的前邊還是後邊

43 //(1)如果找到它的前邊那個不為1的數,且小於等於它的下乙個數 或

44 //(2)它的前邊那個不為1的數為2,則加到前邊那個不為1的數上邊

45 num[tmp]++;

46 else//否則加到它的下乙個數上

47 num[i+1]++;

48 }

49 }

50

51 int ans = 1;

52 for (int i = 0; i < n; i++)

53

57 printf("%d\n", ans);

58 }

59

60 }

九度OJ 1170 找最小數

題目1170 找最小數 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 5464 解決 2415 題目描述 第一行輸入乙個數n,1 n 1000,下面輸入n行資料,每一行有兩個數,分別是x y。輸出一組x y,該組資料是所有資料中x最小,且在x相等的情況下y最小的。輸入 輸入有多組資料。...

NYOJ1170 最大的數

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小明和小紅在打賭說自己數學學的好,於是小花就給他們出題了,考考他們誰nb,題目是這樣的給你n個數 在這n個數之間新增n 1個 或 使結果最大,但不可以打亂原順序,請得出這個結果 如 1 3 5 結果是 1 3 5 20 最大 可...

NYOJ 1170 最大的數

時間限制 1000 ms 記憶體限制 65535 kb 難度 3描述 小明和小紅在打賭說自己數學學的好,於是小花就給他們出題了,考考他們誰nb,題目是這樣的給你n個數 在這n個數之間新增n 1個 或 使結果最大,但不可以打亂原順序,請得出這個結果 如 1 3 5 結果是 1 3 5 20 最大 可以...