代码战争中的算法混乱
Algorithm confusion in codewars
所以问题来了:
新的《复仇者联盟》电影刚刚上映!电影院售票处有很多人排起了长队。他们每人有一张100、50或25美元的钞票。一张《复仇者联盟》的票要25美元。
瓦西娅目前是一名职员。他想把票卖给排队的每一个人。
如果Vasya最初没有钱,并且严格按照排队的顺序售票,他能向每个人出售一张票并找零吗?
如果Vasya可以向每个人出售一张票并找零,则返回YES。否则返回编号
我的代码:
function tickets(peopleInLine) {
var speakVasya = "";
var vasyaValue = 0;
for (var i = 0; i < peopleInLine.length; i++) {
if (peopleInLine[i] - 25 > vasyaValue) {
speakVasya = "NO";
break;
} else {
vasyaValue += 25;
speakVasya = "YES";
}
}
document.write(speakVasya);
}
tickets([25, 25, 50]);
现场演示https://jsfiddle.net/py234z11/1/
我的问题是,根据codewars,我的解决方案通过了7次测试,但在2次测试中失败了,但我不明白是哪一次,因为它没有给出放入tickets函数的争论。
计算他持有的金额是不够的——你需要跟踪账单的数量。
例如,如果你有一张100美元的钞票,你不能为有50美元或100美元钞票的人找零,你需要特定的钞票(25美元的钞票可以找零50美元,25美元和50美元或三张25美元的纸币可以找零100美元钞票)。
因此,与其记录收集的总金额,不如记录收集的账单数量。
我的C#解决方案,已编辑
public static string CanSellTickets(int[] peopleInLine) {
int count25 = 0;
int count50 = 0;
for (var i = 0; i < peopleInLine.Length; i++) {
if (peopleInLine[i] == 25) {
count25++;
}
else if (peopleInLine[i] == 50) {
if (count25 == 0) {
return "NO";
}
else {
count25--;
count50++;
}
}
else if (peopleInLine[i] == 100) {
if (count50 >= 1 && count25 >= 1) {
count25--;
count50--;
}
else if (count50 == 0 && count25 >= 3) {
count25 = count25 - 3;
}
else {
return "NO";
}
}
}
return "YES";
}
相关文章:
- 循环比赛位置算法
- javascript扫雷器floodfill算法不能正常工作
- Node JS中的排名系统算法
- Twitter Bootstrap 2.1.0子菜单在Responsive上看起来很混乱
- 查找仅适用于原始图像的图像放大算法的名称
- 在数组的 2/3 上调用自身的排序算法
- Luhn算法的实现
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 加速单纯形算法
- 从控制器返回到Ajax的数据混乱
- 最短路径算法js错误
- 代码战争中的算法混乱
- 用于自动放置流程图形状的算法
- PHP或JavaScript的基本遗传算法开源代码
- 用Javascript实现算法
- Javascript - 数组混乱的函数
- 功能行为混乱
- React.js状态混乱
- 堆中for循环的奇怪行为's算法
- 一种从随机数的序列中查找值的简单算法