正如标题所说,我希望以下内容:
Int32 GetHighest(Int32 Input , out Int32 Total) // function signiture
Set(4,3,2,1)// example
input = 7 // function returns 3 and out Total = 6 ---> correct
input = 7 // function returns 2 and out Total = 6 ---> Incorrect
input = 5 // function returns 2 and out Total = 4 ---> correct
input = 5 // function returns 3 and out Total = 3---> Incorrect
因此,如果总数相等,那么GetHighest应返回总数最高的结果,然后它应返回具有最高除数的结果。
第一个例子---> 3次进入7次。所以总数是3x2,即6
第二个例子---> 2进3次三次。所以Total是2x3,即6
第三个例子---> 2进5次两次。总数是2x2,即4
第四个例子---> 3进5次。所以总数是3x1,即3
答案 0 :(得分:1)
以下是对代码的修改,不需要存储中间结果:
private Int32 GetHighest(Int32 y, out Int32 totalMax)
{
var Set = new Int32[] { 4, 3, 2 };
totalMax = int.MinValue;
int itemMax = int.MinValue;
foreach (var x in Set)
{
int total = x * (y / x);
if(total >= totalMax && (total > totalMax || x > itemMax))
{
totalMax = total;
itemMax = x;
}
}
return itemMax;
}
答案 1 :(得分:0)
private Int32 GetHighest(Int32 y, out Int32 B)
{
var Set = new Int32[] { 4, 3, 2 };
var Totals = new List<Int32>();
foreach (var x in Set)
Totals.Add(x * (y / x));
var Max = Totals.Max();
var Maxs = Totals.Select((total, index) => new {T = total, index})
.Where(r=> r.T == Max).ToList();
var Maximum = Maxs.Select(G => Set[G.index]).Max();
B = Totals[Array.IndexOf(Set, Maximum)];
return Maximum;
}
我想如果你想要完成某些事情,你必须自己做!