1. 题目描述:
2.解题思路:
通过题目我们可以知道,目标秒数可以由不同的分和秒组合而成,而我们所求的就是各个组合的所耗费的最小代价。所以我们只需要模拟出所有结果并取最小值即可。要注意一个小限制,分钟数最多只能为99分钟,所以当组合中的分钟数超过99时,需要舍弃该组合,这也是我最终该题没有AC的原因,事后看评论区才知道这个。唉!!!
3. 解题代码:
class Solution
{
public:
int minCostSetTime(int startAt, int moveCost, int pushCost, int targetSeconds)
{
int ans = 0;
for (int i = 0; i <= min(99,targetSeconds); ++i)
{
if ((targetSeconds - i) % 60 == 0)
{
int minutes = (targetSeconds - i) / 60;
if(minutes>99)
continue;
int seconds = i;
vector<int> need{minutes / 10, minutes % 10,seconds / 10, seconds % 10};
int flag = 1;
int a = 0;
int s=startAt;
for (auto &x : need)
{
if (x != 0)
flag = 0;
if (flag)
{
continue;
}
else if(startAt==x)
{
a+=pushCost;
}
else
{
a += moveCost+pushCost;
startAt=x;
}
}
startAt=s;
if(ans==0)
ans=a;
else
ans = min(ans, a);
}
}
return ans;
}
};
4. 总结:
写这篇题解是为了警示自己这个小菜鸡,这次的t3其实我的思路是正确的,但是确实因为不够相信自己所以也没有抱着一定要做出来的决心,导致并没有在规定时间内解出该题,并且途中犯了不少小错误,导致调试耗费了不少时间,都是不认真写的很多小问题。已经好久没写题了,躺平了,导致写代码都感觉有点生疏。唉!然后感觉每次做题前一定要认真审题。