# 2483. Minimum Penalty for a Shop ###### tags: `LeetCode` ## **Link** https://leetcode.com/problems/minimum-penalty-for-a-shop/ ## **Code** ```cpp= class Solution { public: int bestClosingTime(string customers) { int dp[2][customers.size()+1]; memset(dp,0,sizeof(int)*2*(customers.size()+1)); // 其實是做前綴和 for(int i=0;i<customers.size();++i) { dp[0][i+1]=dp[0][i]+(customers[i]=='Y'); dp[1][i+1]=dp[1][i]+(customers[i]=='N'); } int mn=1e9,ans=0; // 算罰時找最佳切點 for(int i=0;i<=customers.size();++i) { if(mn>dp[0][customers.size()]-dp[0][i]+dp[1][i]) { mn=dp[0][customers.size()]-dp[0][i]+dp[1][i]; ans=i; } } return ans; } }; ``` ## 小小的備註 一般的陣列像是下面這種,是可以直接初始化裡面的值的 ```cpp= int dp[2][100005]={}; ``` 但若是像下面這種有維度是變數的,無法直接初始化,需要另寫一行 ```cpp= int dp[2][customers.size()+1]; memset(dp,0,sizeof(int)*2*(customers.size()+1)); ``` 另外,memset只能將一整個int陣列設為-1或0(或是某些特定數字||0x3f||),因為memset其實是把每一個byte都改成第二項參數。如果要預設為其他的數字可能用vector會比較方便,但是vector就不能用memset。 ## date **2023.08.29** {%hackmd @nnks8908/background_leetcode %}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up