分割平衡字符串
class Solution {
public:
int balancedStringSplit(string s) {
int len=s.size();
int cnt=0;
int balance=0;
for(int i=0;i<len;i++)
{
if(s[i]=='R')
{
balance--;
}
else
{
balance++;
}
if(balance==0)
{
cnt++;
}
}
return cnt;
}
};
買賣股票的最佳時(shí)機(jī)Ⅱ
class Solution {
public:
int maxProfit(vector<int>& prices) {
int maxprofit=0;
int day=prices.size();
for(int i=1;i<day;i++)
{
if(prices[i-1]<prices[i])
{
maxprofit+=prices[i]-prices[i-1];
}
}
return maxprofit;
}
};
跳躍游戲
文章來源:http://www.zghlxwxcb.cn/news/detail-702380.html
class Solution {
public:
bool canJump(vector<int>& nums) {
int maxlen=0;
int len=nums.size();
for(int i=0;i<len;i++)
{ //判斷是否能到當(dāng)前位置
if(maxlen>=i)
{
maxlen=max(maxlen,i+nums[i]);
}
else
{ //到不了當(dāng)前位置就說明也就到不了最后的位置
return false;
}
//當(dāng)最大路徑大于總里程時(shí)就可以返回了
if(maxlen>len-1)
{
return true;
}
}
return true;
}
};
錢幣找零
假設(shè)1元、2元、5元、10元、20元、50元、100元的紙幣分別由c0,c1,c2,c3,c4,c5,c6張?,F(xiàn)在要用這些錢來支付K元,至少要用多少?gòu)埣垘牛?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-702380.html
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct moneycmp
{
bool operator()(vector<int>& array1, vector<int>& array2)
{
return array1[0] > array2[0];
}
}cmp;
//0:是面值 1:是數(shù)量
int MoneyMat(vector<vector<int>>& moneymat, int money)
{
int cnt = 0;
sort(moneymat.begin(),moneymat.end(),cmp);
//遍歷面值
for (auto& array : moneymat)
{
int c = 0;
c = money / array[0];
//確保取得是最小值,保證張數(shù)不會(huì)超
c=min(c, array[1]);
money -= c * array[0];
cnt += c;
}
if (money != 0)
{
return -1;
}
return cnt;
}
int main()
{ //面值,數(shù)量
vector<vector<int>> mat = { {100,5} ,{50,3},{20,4},{5,5},{2,5},{1,10} };
int money=0;
cin >> money;
int count=MoneyMat(mat,money);
cout << count << endl;
return 0;
}
到了這里,關(guān)于【刷題篇】貪心算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!