900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > m苹果放n篮子_【求这个编程】 有m个橘子 n个篮子 把橘子全部放进篮子里的...

m苹果放n篮子_【求这个编程】 有m个橘子 n个篮子 把橘子全部放进篮子里的...

时间:2020-05-19 20:08:10

相关推荐

m苹果放n篮子_【求这个编程】 有m个橘子 n个篮子 把橘子全部放进篮子里的...

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

int 篮子数, 橘子数, 橘子占位, 全局模拟计数;

int[, ,] 快捷记录;

bool 优化;

string 全局结果 = "";

private void Form1_Load(object sender, EventArgs e)

{

篮子数 = 20;

橘子数 = 60;

橘子占位 = 橘子数.ToString().Length;

全局模拟计数 = 0;

快捷记录 = new int[Math.Min(篮子数, 橘子数) + 1, 橘子数 + 1, 橘子数 + 1];

string 结果文本 = "";

int[] 篮子情况 = new int[篮子数];

优化 = true;

int 优化后结果计数 = 递归(篮子情况.Length - 1, 橘子数, 篮子情况, 橘子数);

结果文本 += "模拟计数=" + 全局模拟计数.ToString() + "\r\n";

if (优化)

{

结果文本 += "优化后结果计数" + 优化后结果计数.ToString() + "\r\n";

}

结果文本 += 全局结果 + "\r\n";

textBox1.Text = 结果文本;

}

private int 递归(int 篮子号, int 剩余橘子数, int[] 篮子情况, int 前一个篮子)

{

int 本层计数 = 0;

if (前一个篮子 >= 剩余橘子数 &&

(篮子号 == 0 || 剩余橘子数 == 0))

{

篮子情况[篮子号] = 剩余橘子数;

/*输出篮子情况*/

全局结果 += 输出篮子情况(篮子情况) + "\r\n";

篮子情况[篮子号] = 0;

本层计数++;

}

else if (篮子号 > 0)

{

if (优化)

{

int 剩余篮数 = 篮子号 + 1;

剩余篮数 = Math.Min(剩余篮数, 剩余橘子数);

if (快捷记录[剩余篮数, 剩余橘子数, 前一个篮子] != 0)

{

//if (剩余篮数 > 0)

本层计数 += 快捷记录[剩余篮数, 剩余橘子数, 前一个篮子];

全局结果 += 输出篮子情况(篮子情况) + "+ 快捷 " +

剩余篮数.ToString() + "," +

剩余橘子数.ToString() + "," +

前一个篮子.ToString() + "=" +

快捷记录[剩余篮数, 剩余橘子数, 前一个篮子].ToString() + "\r\n";

}

else

{

for (int i = Math.Min(前一个篮子, 剩余橘子数); i >= 1; i--)

{

篮子情况[篮子号] = i;

本层计数 += 递归(篮子号 - 1, 剩余橘子数 - i, 篮子情况, 篮子情况[篮子号]);

}

快捷记录[剩余篮数, 剩余橘子数, 前一个篮子] = 本层计数;

}

}

else

{

for (int i = Math.Min(前一个篮子, 剩余橘子数); i >= 1; i--)

{

篮子情况[篮子号] = i;

本层计数 += 递归(篮子号 - 1, 剩余橘子数 - i, 篮子情况, 篮子情况[篮子号]);

}

}

篮子情况[篮子号] = 0;

}

return 本层计数;

}

private string 输出篮子情况(int[] 篮子情况)

{

string 文本 = "";

for (int i = 0; i < 篮子情况.Length; i++)

{

文本 += 篮子情况[i].ToString().PadLeft(橘子占位, ' ') + " ";

}

全局模拟计数++;

return 文本;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。