你这是项目,还是家庭作业,怎么那么奇葩呢
为什么ABC不是一次性给出数量,而是分成那么多行
而如果调整成5:2:3之后,也要跟原来一样分那么多份么?
为什么ABC不是一次性给出数量,而是分成那么多行
而如果调整成5:2:3之后,也要跟原来一样分那么多份么?
解决方案 »
- 当虚拟鼠标点击textBox时弹出信息
- 关于ado.net。会的进来看看啊。
- 正则表达式问题 大家来看看了!
- 一个设计模式的问题,100分
- 有winform高手吗? c# windows应用程序中datagridview 控件如何删除一个行
- 请教:DataGrid中的DataSource和SetDataBinding的区别
- 在.net精简版中如何将一个bitmap对象保存到一个文件中去?
- WPF DataGridTextColumn.Visibility绑定问题
- c# 鍵盤事件!
- C#文件读写的问题,C#调用C++dll的问题
- 求助this.Visible = false;隐藏后,关机提示正在结束,结束不了,怎么处理?
- 求正则表达式 (数字 字母 + 长度限制)
且问题一点也不奇葩.
问题是,
A 1
A 2
如果最终确定A应该买4个,那按什么规律将4个再分成2组?是平均分,还是按比例分?
而只调整ABC,A和B都有好多个,到底调整全部,还是调整哪个?
A 2
B 3
C 4
B 5
B 6 通过算法(现在的问题)得出结果:A 1
A 2
A 3
C 4
A 5
B 6
x 2
x 3
x 4
x 5
x 6其中x表示替代物料组的意思。x替代物料组中包括A,B,C三种具体的物料。
也就是说x用A或B或C来替代都可以。但考虑A,B,C的成本及其他因素,购买A,B,C要按照一定的比例购买。
即我上面提供的50%:30%:20%来购买。算法执行后提供出一款具体最佳的方案给用户。
如:
A 1
A 2
A 3
B 4
B 5
C 6方案的实际比率为6/21:9/21:6:21 符合无限接近 50%: 30%:20%
注:可以看出,以上方案不是最佳方案。不想谈需求的原因是:需求我已经进行过分析了,现在已经具体到算法了。
那直接 21*0.5=10.5 四舍五入 11 A就11个然后 (21-11)*0.6=6 B 就6个
最后 C等于4个
按这顺序计算一下就好了 需要什么复杂的算法吗?你是需求是要11个A 6个B 4个C 在具体分成
a: 1
a:2
a:3
a:5
b:6
c:4
这样?
判断是否最佳方案的标准又是什么?
对,就是要得出这样一个结果.具体的代码如何实现,需要动态算,
x后面的数量是固定的,不可更改,而且行数也是固定的,不可更改,仅仅是将x替换成abc?
回答 :对.判断是否最佳方案的标准又是什么?
回答: 这个目前还没定,暂时考虑计算出实际方案的比率.和希望的比率进行比较,选择偏差值接近0的.
然后每一次里面做个for循环,将当前行分别赋值成A,B,C
最终递归完一次,就输出个结果
然后算一下比率,记住再出一个结果,和上一次的比较,更优就替换,否则丢弃
全部递归完,将最优解输出
class Program
{
string[] re = new string[6];
static void Main(string[] args)
{
Program aa = new Program();
aa.GetMethod("A", 0);
aa.GetMethod("B", 0);
aa.GetMethod("C", 0);
Console.ReadLine();
}
public void GetMethod(string A,int n)
{
if (n == 6)
{
Output(re);
return;
}
re[n] = A;
GetMethod("A", n + 1);
GetMethod("B", n + 1);
GetMethod("C", n + 1);
}
public static void Output(string[] re)
{
for (int i = 0; i < re.Length; i++)
{
Console.Write(re[i] + " ");
}
Console.WriteLine();
}
}
看着个行不,……
string[] resultList = new string[rowsCount]; void getValue(int step, int maxStep)
{
string strValue = "";
for (int i = 0; i < 3; i++)
{
switch (step)
{
case 0:
strValue = "A";
break;
case 1:
strValue = "B";
break;
case 2:
strValue = "C";
break;
} resultList[step] = strValue; if (step < maxStep)
{
getValue(step + 1, maxStep);
}
else
{
foreach (string s in resultList)
{
Console.WriteLine(s);
}
}
}
}