2017 校招題幸運袋子(遞迴回溯法 DFS)

2021-08-23 14:28:06 字數 793 閱讀 5723

乙個袋子裡面有n個球,每個球上面都有乙個號碼(擁有相同號碼的球是無區別的)。如果乙個袋子是幸運的當且僅當所有球的號碼的和大於所有球的號碼的積。

例如:如果袋子裡面的球的號碼是,這個袋子就是幸運的,因為1 + 1 + 2 + 3 > 1 * 1 * 2 * 3

你可以適當從袋子裡移除一些球(可以移除0個,但是別移除完),要使移除後的袋子是幸運的。現在讓你程式設計計算一下你可以獲得的多少種不同的幸運的袋子。

第一行輸入乙個正整數n(n ≤ 1000)

第二行為n個數正整數xi(xi ≤ 1000)

輸出可以產生的幸運的袋子數
示例1

複製

3

1 1 1

複製

2
思路:主要考察了遞迴回溯法;dfs 以及如何剪枝(這裡就需要排序了)

考慮 nums[i]=1 那麼肯定就是滿足的  sum+1>mul*1;

**:

#include using namespace std;

using ll = long long;

int n;

int res;

void dfs(vector&nums, int index, int sum, int mul)

else //否則的直接退出就是了;後面的數都是大的數 肯定不會成立了;因為已經排過序了;

break;

sum -= nums[i];

mul /= nums[i];

} return;

}int main()

2017校招 幸運的袋子

2017校招 幸運的袋子 乙個袋子裡面有n個球,每個球上面都有乙個號碼 擁有相同號碼的球是無區別的 如果乙個袋子是幸運的當且僅當所有球的號碼的和大於所有球的號碼的積。例如 如果袋子裡面的球的號碼是,這個袋子就是幸運的,因為1 1 2 3 1 1 2 3 你可以適當從袋子裡移除一些球 可以移除0個,但...

2017校招真題 幸運數

時間限制 1秒 空間限制 32768k 題目描述 小明同學學習了不同的進製之後,拿起了一些數字做起了遊戲。小明同學知道,在日常生活中我們最常用的是十進位制數,而在計算機中,二進位制數也很常用。現在對於乙個數字x,小明同學定義出了兩個函式f x 和g x f x 表示把x這個數用十進位制寫出後各個數字...

2023年校招題

牛牛有乙個魚缸。魚缸裡面已經有n條魚,每條魚的大小為fishsize i 1 i n,均為正整數 牛牛現在想把新捕捉的魚放入魚缸。魚缸內存在著大魚吃小魚的定律。經過觀察,牛牛發現一條魚a的大小為另外一條魚b大小的2倍到10倍 包括2倍大小和10倍大小 魚a會吃掉魚b。考慮到這個,牛牛要放入的魚就需要...