C#为数学好的学生

C#为数学好的学生,c#,java,vb.net,C#,Java,Vb.net,我有一个介于10和30之间的数字,我需要在4个运算加法或减法中表示这个数字,但这两个运算都应该至少出现一次,所以我们总是需要至少使用一次加法和减法 以下是一个例子: 我需要生成的数字是21:5+6,8-5,9-4,1+1(11+3+5+2)=21(或任何其他组合等于21) 我需要为10到30之间的任何数字生成4个操作 有人能帮我吗 如果你有一个Java、C#或VB的示例,它适合我。作业 您可以尝试将其分为两个操作: 将目标数字写为4个数字的总和 把这些数字写成加法或减法 你知道吗?您可以使用

我有一个介于10和30之间的数字,我需要在4个运算加法或减法中表示这个数字,但这两个运算都应该至少出现一次,所以我们总是需要至少使用一次加法和减法

以下是一个例子:

我需要生成的数字是21:5+6,8-5,9-4,1+1(11+3+5+2)=21(或任何其他组合等于21)

我需要为10到30之间的任何数字生成4个操作

有人能帮我吗

如果你有一个Java、C#或VB的示例,它适合我。

作业

您可以尝试将其分为两个操作:

  • 将目标数字写为4个数字的总和
  • 把这些数字写成加法或减法

你知道吗?您可以使用它生成一些数字,然后尝试是否可以使它们“适合”。我曾经找到了一个不错的解决方案。但遗憾的是,我忘记了。但我发现的是guy通过使用LINQ mixed with random运算符实现了所有可能性,如IEnumerable和.First(),从而实现了神奇的效果。

也许类似于此,请定制它以满足您的需要:

Random rn = new Random();
        int a, b, c, d;

        int min = 3, max = 10;
        int desired = 30;
        while
            (
            (
            (a = rn.Next(min, max))
            + (b = rn.Next(min, max))
            + (c = rn.Next(min, max))
            + (d = rn.Next(min, max))
            )
            != desired
            ) { }

        int x = rn.Next(-1* (a - 1 ), a - 1);
        int y = rn.Next(-1 * (b - 1), b - 1);
        int z = rn.Next(-1 * (c - 1), c - 1);
        int v = rn.Next(-1 * (d - 1), d - 1);

        string result =
            (x >= 0 ? (a - x) + "+" + x : (a + -1 * x) + "-" + -1 * x) + " + " +
            (y >= 0 ? (b - y) + "+" + y : (b + -1 * y) + "-" + -1 * y) + " + " +
            (z >= 0 ? (c - z) + "+" + z : (c + -1 * z) + "-" + -1 * z) + " + " +
            (v >= 0 ? (d - v) + "+" + v : (d + -1 * v) + "-" + -1 * v);

你想找到所有的排列还是4个加法/减法问题的任意一个排列,其和等于输入?你尝试了什么?你至少可以考虑一下你将如何处理这个问题,看看它是如何完成的。我的意思是,如果你依赖别人给你解决问题的方法,你就不会学到任何解决问题的方法。@user508412-我们问你做了什么,因为用勺子喂你整个解决方案不是这个目的。如果你还没有开始,你怎么知道你“不能”解决这个问题呢。谢谢你的好建议,我没有想到LINQ,但我也计划将它移植到JAVA,这样LINQ可能会成为一个限制。你是我的英雄,Andrzej。你帮我省去了很多麻烦