我有问题(可能是因为睡眠不足!)在这里,我试图在C#中解决一个数学题。
假设我有一台饮料机,我有三排空的,可以装满可乐。我手里拿着17罐可乐,每一行我都要装满一罐可乐。
例如..。
通行证1:
加可乐到第一排。饮料= 1。
加可乐到第二排。饮料=1。
加可乐到第三排。饮料=1。
通行证2:
加可乐到第一排。饮料=2。
加可乐到第二排。饮料= 2。
加可乐到第三排。饮料=2。
..。
通过6
加可乐到第一排。饮料=6。
加可乐到第二排。饮料=6。
加入可乐到第三排。饮料=5(此时不再剩饮料)
不知为什么,我完全迷路了。有人能帮忙吗?!
发布于 2009-08-09 00:01:31
非常快速和无痛,只需要一个循环,而不是两个嵌套循环。您只需要一点数学就可以得到数组的正确索引:
int[] Cola = {0,0,0};
int Rows = Cola.Length;
int Drinks = 17;
for (int i = Drinks; i > 0; i--)
{
Cola[(Drinks - i) % Rows]++;
}
Console.WriteLine("Row 1 has " + Cola[0] + " cans.");
Console.WriteLine("Row 2 has " + Cola[1] + " cans.");
Console.WriteLine("Row 3 has " + Cola[2] + " cans.");这将产生作为输出的结果:
Row 1 has 6 cans.
Row 2 has 6 cans.
Row 3 has 5 cans.发布于 2009-08-09 00:14:46
不必一次循环添加一个罐,您可以计算每行将得到多少罐:
int cans = 17;
cans += machine.Rows.Count;
for(int i = 1; i <= machine.Rows.Count; i++) {
Console.WriteLine("Row {0} has {1} cans.", i, --cans / machine.Rows.Count);
}发布于 2009-08-09 00:03:06
从臀部射门:
int numDrinks = /* Your constant here */
int[] drinksInRow = new int[NUM_ROWS];
for(int i = 0; i < drinksInRow.Length; i++)
{
drinksInRow[i] = numDrinks / NUM_ROWS;
if(i < numDrinks % NUM_ROWS) drinksInRow[i]++;
}每行饮料的数量都在drinksInRow中,从0开始按行号进行索引。
这比重复传球更快;如果真的与Big一起玩得很松,那么它的O()基本上就是O()。
https://stackoverflow.com/questions/1250180
复制相似问题