C# 数字之间的配比问题,代码该如何写? c# 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 晕我觉得我写的还是挺清楚的吧,就是ABCD这四数之间进行配比取出最大化 嗯是的,就是,ABCD之间只能是三个三个的进行配,然后,以每一组中最少的为准,例A:0 B:2 C:5 D:3因为A为0所以只能是BCD之间进行配,且只能配出2个, 通过Math.Min来获取最小,代码等VS打开了敲一个 /// <summary> /// /// </summary> /// <param name="seeds">ABCD顺序对应的值,如[10,12,20,8]</param> /// <param name="idxs">哪些索引对应的值需要获取最小值</param> /// <returns></returns> public int GetMinValue(int[] seeds, int[] idxs) { int minValue = 0; if (seeds != null && seeds.Length == 4 && idxs != null && idxs.Length == 3 && idxs.Max() < 4 && idxs.Min() >= 0 && idxs.Distinct().Count() == 3) { minValue = Math.Min(seeds[idxs[0]], seeds[idxs[1]]); minValue = Math.Min(minValue, seeds[idxs[2]]); if (minValue > 0) { //已获取最小匹配值,相应位置移除 foreach (var i in idxs) { seeds[i] -= minValue; } } } return minValue; } 你好,感谢你提供的代码,刚才我试了下,需要指定输入 int[] idxs这个数组中的下标索引,也就是说,每一次获取的时候都需要手动输入,如果能自动进行就最好了,另外,你这个第一个参数的数组在执行一遍后,应该把值保存下来,然后再给第二次去配比,否则,每次都会用到原始的值去计算,不过,还是感谢你的代码意见,我自己再研究下,看看能不能再改进下,感谢,上分。 int[] seeds因为只是修改内部值,所以不用ref值得变化也会体现在方法调用后,你直接调用两次方法就知道了,至于下标的问题,因为你没有如何组合的规则,所以你需要在方法外部写一段组合规则你好,感谢你提供的代码,刚才我试了下,需要指定输入 int[] idxs这个数组中的下标索引,也就是说,每一次获取的时候都需要手动输入,如果能自动进行就最好了,另外,你这个第一个参数的数组在执行一遍后,应该把值保存下来,然后再给第二次去配比,否则,每次都会用到原始的值去计算,不过,还是感谢你的代码意见,我自己再研究下,看看能不能再改进下,感谢,上分。 C#图解教程 求教贝页斯分类法 DataGrid互相嵌套的问题? WMI远程启动、停止程序(进程)的办法 mdi主窗体的背景怎么设置啊,要随窗体变化填充满窗体 在C#下Windows窗体如何获取.ini文件中的参数内容??谢谢指点!! C#的数据库应用如何解决内存消耗太大的问题呢? 我现在要在vs2008里做一个用户可以直接操作excel的功能,用VSTO能实现吗? 这个错误怎么改? Service程序如何在网络驱动器下建目录? C# 自己定义了一个byte数组,如何把byte数组中的数据在picturebox中呈现灰度图像 关于visual studio 2013 的 C#问题
因为A为0所以只能是BCD之间进行配,且只能配出2个,
///
/// </summary>
/// <param name="seeds">ABCD顺序对应的值,如[10,12,20,8]</param>
/// <param name="idxs">哪些索引对应的值需要获取最小值</param>
/// <returns></returns>
public int GetMinValue(int[] seeds, int[] idxs)
{
int minValue = 0;
if (seeds != null && seeds.Length == 4
&& idxs != null && idxs.Length == 3 && idxs.Max() < 4 && idxs.Min() >= 0 && idxs.Distinct().Count() == 3)
{
minValue = Math.Min(seeds[idxs[0]], seeds[idxs[1]]);
minValue = Math.Min(minValue, seeds[idxs[2]]);
if (minValue > 0)
{
//已获取最小匹配值,相应位置移除
foreach (var i in idxs)
{
seeds[i] -= minValue;
}
}
}
return minValue;
}