我有一个介于10和30之间的数字,我需要在4次加法或减法运算中表示这个数字,但两者都应该至少出现一次,所以我们总是需要使用加法和减法至少一次。
下面是一个示例:
我需要生成的数字是21 : 5+6,8-5,9-4,1+1 (11+3+5+2)=21 (或者任何其他组合等于21)
我需要为10到30之间的任何数字生成4个操作
有人能帮我吗?
如果你有一个用Java,C#或VB编写的示例,它对我来说很好用。
发布于 2010-12-23 00:48:43
也许像这样的东西,定制它以满足您的需求:
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);
发布于 2010-12-23 00:33:07
家庭作业?
您可以尝试将其拆分为两个操作:
你知道System.Random的事吗?您可以使用它来生成一些数字,然后尝试是否可以使它们“适合”。
发布于 2010-12-23 00:43:59
我曾经对此找到了一个像样的解决方案。但遗憾的是忘记了。但我发现的是,这个人通过混合使用LINQ和随机操作符来实现,以获得所有的可能性,就像IEnumerable和.First()一样。
https://stackoverflow.com/questions/4511244
复制相似问题