找出 X 集合中的最大可整除整数
Find Highest Divisible Integer In Set By X
正如标题所说,我想要以下内容:
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 应该 return 总计最高的结果,如果总计相等,那么它应该 return 最高除数的结果。
第一个例子 ---> 3 进入 7 两次。所以总和是 3x2 即 6
第二个例子---> 2进入7三次。所以总数是 2x3 即 6
第三个例子 ---> 2 进入 5 两次。所以总数是 2x2 也就是 4
第四个例子---> 3进5一次。所以总数是 3x1 也就是 3
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;
}
我想如果你想做某事你必须自己做!
这是对您的代码的改编,不需要存储中间结果:
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;
}
正如标题所说,我想要以下内容:
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 应该 return 总计最高的结果,如果总计相等,那么它应该 return 最高除数的结果。
第一个例子 ---> 3 进入 7 两次。所以总和是 3x2 即 6
第二个例子---> 2进入7三次。所以总数是 2x3 即 6
第三个例子 ---> 2 进入 5 两次。所以总数是 2x2 也就是 4
第四个例子---> 3进5一次。所以总数是 3x1 也就是 3
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;
}
我想如果你想做某事你必须自己做!
这是对您的代码的改编,不需要存储中间结果:
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;
}