<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/622b67543d2fbb0007436d84/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b67543d2fbb0007436d84/bg1.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">题目二</div><div class="t m0 x2 h4 y3 ff1 fs1 fc0 sc0 ls0 ws0">要求:设<span class="_ _0"> </span><span class="ff2">n<span class="_ _1"> </span></span>为一自然数<span class="_ _2"></span>,<span class="ff2">n<span class="_ _1"> </span></span>可<span class="_ _2"></span>以分解成若干<span class="_ _2"></span>个不同的自然<span class="_ _2"></span>数的和,这样<span class="_ _2"></span>的分法有很多<span class="_ _2"></span>种,比如<span class="_ _3"> </span><span class="ff2">n=10,</span></div><div class="t m0 x3 h4 y4 ff2 fs1 fc0 sc0 ls0 ws0">10<span class="_"> </span><span class="ff1">可<span class="_ _2"></span>以<span class="_ _4"></span>分<span class="_ _2"></span>解<span class="_ _4"></span>为<span class="_ _4"></span>:<span class="_ _4"></span></span>10=5+4+1; <span class="_ _2"></span>10=5+3+<span class="_ _2"></span>2; <span class="_ _2"></span>10+<span class="_ _2"></span>9+1; <span class="_ _4"></span>10=8+2; <span class="_ _2"></span>10=7+3;<span class="_ _2"></span> <span class="_ _2"></span>10=6+<span class="_ _2"></span>4; <span class="_ _2"></span>10=<span class="_ _2"></span>7+2+1;<span class="_ _2"></span> <span class="_ _2"></span>10=6+3+1;…<span class="_ _4"></span><span class="ff1">。</span></div><div class="t m0 x3 h4 y5 ff1 fs1 fc0 sc0 ls0 ws0">在所有这些分法中,各加数乘积最大的为<span class="_ _5"> </span><span class="ff2">30, </span>(<span class="ff2">10=5+3+2<span class="_ _1"> </span></span>中加数的乘积为<span class="_ _0"> </span><span class="ff2">5*3*2=30</span>)。试编写程序,求</div><div class="t m0 x3 h4 y6 ff1 fs1 fc0 sc0 ls0 ws0">各种分解方法中各加数乘积的最大值。</div><div class="t m0 x2 h4 y7 ff1 fs1 fc0 sc0 ls0 ws0">算法思想:</div><div class="t m0 x2 h4 y8 ff2 fs1 fc0 sc0 ls0 ws0">1.n<span class="_ _1"> </span><span class="ff1">为要分解的自然数,设一个数组<span class="_ _1"> </span></span>a<span class="ff1">【】来保存分解的到的结果。</span></div><div class="t m0 x2 h4 y9 ff2 fs1 fc0 sc0 ls0 ws0">2.<span class="ff1">把<span class="_ _1"> </span></span>n<span class="_ _1"> </span><span class="ff1">赋给<span class="_ _1"> </span></span>m<span class="ff1">,对<span class="_ _1"> </span></span>m<span class="_ _1"> </span><span class="ff1">进行变换操作。当<span class="_ _1"> </span></span>m>i<span class="_ _1"> </span><span class="ff1">时进行<span class="_ _1"> </span></span>a[i]=i;<span class="_ _6"> </span>m=m-i;<span class="_ _7"> </span>i++;<span class="ff1">循环操作,知道<span class="_ _1"> </span></span>m<=i<span class="ff1">,</span></div><div class="t m0 x2 h4 ya ff2 fs1 fc0 sc0 ls0 ws0">3.<span class="ff1">把<span class="_ _1"> </span></span>i<span class="_ _1"> </span><span class="ff1">自减后得到最后的<span class="_ _1"> </span></span>a<span class="ff1">【</span>i<span class="ff1">】的值。把<span class="_ _1"> </span></span>i<span class="_ _1"> </span><span class="ff1">赋给<span class="_ _1"> </span></span>j<span class="ff1">。</span></div><div class="t m0 x2 h4 yb ff2 fs1 fc0 sc0 ls0 ws0">4.<span class="ff1">把<span class="_ _1"> </span></span>m<span class="_ _1"> </span><span class="ff1">分解成<span class="_ _1"> </span></span>m<span class="_ _1"> </span><span class="ff1">个<span class="_ _1"> </span></span>1<span class="_ _1"> </span><span class="ff1">加到<span class="_ _1"> </span></span>a[i]<span class="ff1">到<span class="_ _1"> </span></span>a[i-m]<span class="ff1">中;</span></div><div class="t m0 x2 h4 yc ff2 fs1 fc0 sc0 ls0 ws0">5.Max=max*a[i]<span class="ff1">;</span>i<span class="_ _1"> </span><span class="ff1">从<span class="_ _1"> </span></span>2<span class="_ _1"> </span><span class="ff1">到<span class="_ _1"> </span></span>j<span class="ff1">,就得到乘积最大值。</span></div><div class="t m0 x3 h4 yd ff1 fs1 fc0 sc0 ls0 ws0">程序流程图:</div><div class="t m0 x3 h4 ye ff1 fs1 fc0 sc0 ls0 ws0">运行结果<span class="ff2">&&</span>实例分析:</div><div class="t m0 x3 h5 yf ff3 fs2 fc0 sc0 ls0 ws0">1.8<span class="_"> </span><span class="ff1">先分解为<span class="_ _1"> </span></span>2 3<span class="_"> </span><span class="ff1">还剩余一个<span class="_ _1"> </span></span>3.</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
</body>
</html>