《编程之美》中一摞烙饼的排序,求解疑?

无间虚者 无间虚者 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
//排序的主函数
void Search(int step)
{
int i, nEstimate;
m_nSearch++;
//如果搜索次数大于最大的排序次数就退出
nEstimate = LowerBound(m_ReverseCakeArray, m_nCakeCnt);
if(step + nEstimate > m_nMaxSwap)
return;

//如果已经排好序,即翻转完成, 输出结果
if(IsSorted(m_ReverseCakeArray, m_nCakecnt))
{
.....
}

//递归进行翻转
for(i =1; i< m_nCakeCnt;i++)
{
Reverse(0, i);
m_ReverseCakeArraySwap[step]=i;
Search(step+1);
Reverse(0, i);
}

}


//翻转烙饼信息
void Reverse(int nBegin, int nEnd)
{
assert(nEnd > nBegin);
int i,j,t;

//翻转烙饼信息
for(i = nBegin, j = nEnd; i< j; i++,j--)
{
t = m_ReverseCakeArray[i];
m_ReverseCakeArray[i] = m_ReverseCakeArray[j];
m_ReverseCakeArray[j] = t;
}
}

第2部分的红字,为什么这个函数只是简单的进行交换,却可以将烙饼正确的排序???
...全文

相关推荐

烙饼排序算法和买书问题源码

《程序之美-C语言:烙饼排序算法与买书问题源码》在计算机科学的世界里,算法是解决问题的关键。本文将深入探讨两个编程问题:烙饼排序算法和买书问题,这两个问题都涉及到C语言的高效实现。

zenglu19840707

翻转烙饼排序问题(C语言源码)

通过C语言实现这一问题的解决方案,不仅可以帮助我们更好地掌握算法的逻辑和编程技巧,同时也能够激发对计算机科学领域更深层次探索的兴趣。

Q酱

《数学广角合理烙饼与沏茶》课件.ppt

将视角转移到沏茶问题上,我们发现它与烙饼问题有着异曲同工之妙。虽然课件没有详细展开沏茶问题的具体策略,但我们可以推测它同样涉及任务排序和资源优化的问题。

gch251090

leetcode中国-BeautyOfProgramming:本书的代码

leetcode中国ContentsChapter1游戏之乐1.1让CPU占用率曲线听你指挥CPU占用率曲线为正弦曲线的效果图1.2中国象棋将帅问题1.3一摞烙饼的排序扩展问题2:先按照朴素的panc

weixin_38714370

人教版小学四年级数学上册第七单元《数学广角》PPT课件77168PPT课件.pptx

例如,如果要烙7张饼,我们应该怎样规划流程才能用最短的时间完成?或者当有3位客人需要赶火车,而平底锅每次只能烙两张饼时,我们该如何安排烙饼的顺序才能保证他们及时吃到饼?

加油学习加油进步
评论
收藏 已收藏
分享
返回顶部