C++ 中的最佳劃分
假設我們有一個正整數列表;相鄰的整數將執行浮點除法。例如,[2,3,4] -> 2 / 3 / 4。現在,我們可以在任何位置新增任意數量的括號來更改這些操作的優先順序。我們應該找出如何新增括號以獲得最大結果,我們必須找到字串格式的對應表示式。我們的表示式不應該包含冗餘的括號。因此,如果輸入類似於 [1000,100,10,2],則結果將為“1000/(100/10/2)”。
為了解決這個問題,我們將遵循以下步驟:
- n := nums 陣列的大小
- 如果 n 為 0,則返回一個空字串。
- num := nums[0] 作為字串
- 如果 n 為 1,則返回 num
- 如果 n 為 2,則返回 num 連線 /,連線 nums[1] 作為字串
- den := 一個空字串
- 對於 i 在範圍 1 到 n – 1 內
- den := den + nums[i] 作為字串
- 如果 i 不等於 n – 1,則 den := den 連線 ‘/’
- 返回 num 連線 / 連線(連線 den ,連線)
讓我們看看下面的實現以更好地理解:
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string optimalDivision(vector<int>& nums) {
int n = nums.size();
if(n == 0) return "";
string num = to_string(nums[0]);
if(n == 1) return num;
if(n == 2) return num + "/" + to_string(nums[1]);
string den = "";
for(int i = 1; i < n; i++){
den += to_string(nums[i]);
if(i != n - 1) den += "/";
}
return num + "/" + "(" + den + ")";
}
};
main(){
vector<int> v = {1000,100,10,2};
Solution ob;
cout << (ob.optimalDivision(v));
}輸入
[1000,100,10,2]
輸出
1000/(100/10/2)
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP