﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-还没想好</title><link>http://www.cppblog.com/oldbug/</link><description>怎样弥补荒废的青春</description><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 08:31:40 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 08:31:40 GMT</pubDate><ttl>60</ttl><item><title>差距太大了? ——一道面试题</title><link>http://www.cppblog.com/oldbug/archive/2012/05/31/176875.html</link><dc:creator>nullpointer</dc:creator><author>nullpointer</author><pubDate>Thu, 31 May 2012 01:17:00 GMT</pubDate><guid>http://www.cppblog.com/oldbug/archive/2012/05/31/176875.html</guid><wfw:comment>http://www.cppblog.com/oldbug/comments/176875.html</wfw:comment><comments>http://www.cppblog.com/oldbug/archive/2012/05/31/176875.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/oldbug/comments/commentRss/176875.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oldbug/services/trackbacks/176875.html</trackback:ping><description><![CDATA[<table style="background-color: #f0f3fa; width: 1119px; border-collapse: collapse; font-family: song, Verdana; word-wrap: break-word; empty-cells: show; table-layout: fixed; color: #000000; font-size: 12px" cellspacing="0" cellpadding="0">
<tbody style="word-wrap: break-word">
<tr style="word-wrap: break-word">
<td style="line-height: 1.6em; word-wrap: break-word; font-size: 14px" id="postmessage_6014519">有两个数组a,b，大小都为n,数组元素的值任意，无序；<br style="word-wrap: break-word" />要求：通过交换a,b中的元素，使数组a元素的和与数组b元素的和之间的差最小<br /><br />据说要8分钟内写出代码，我试了一下，整出思路都有几分钟了，代码写出来都快个把小时了，自认为也写过那么多年的程序，也不至于那么弱爆吧，难道传说中的神人就这么厉害？<br />代码贴下面，高手指点： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #000000"></span><span style="color: #008000">/*</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000">有两个数组a,b，大小都为n,数组元素的值任意，无序；<br /></span><span style="color: #008080">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000">要求：通过交换a,b中的元素，使数组a元素的和与数组b元素的和之间的差最小<br /></span><span style="color: #008080">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000"></span><span style="color: #008000">*/</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000"></span><span style="color: #008000">/*</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #008000">算法思想就是先把两堆数排序，然后给结果数组分配，当一边有一个最大的数时，<br /></span><span style="color: #008080">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #008000">应该给它配一个最小的数，所以一次取两个数。当给A组分配最大MAX和最小的MIN后，<br /></span><span style="color: #008080">&nbsp;10</span>&nbsp;<span style="color: #008000">再在剩下未分配的数里取出最大和最小的数分配给B，直到分完为止。<br /></span><span style="color: #008080">&nbsp;11</span>&nbsp;<span style="color: #008000">这个算法并不能保证最优解，正确算法应该使用动态规划法，以后补上正解的代码。<br /></span><span style="color: #008080">&nbsp;12</span>&nbsp;<span style="color: #008000"></span><span style="color: #008000">*/</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;13</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;14</span>&nbsp;<span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">从剩余的数厘米找出最大的那个。<br /></span><span style="color: #008080">&nbsp;15</span>&nbsp;<span style="color: #008000"></span><span style="color: #008000">//</span><span style="color: #008000">a,b分别是数组地址，offa和offb是偏移量，是值结果参数。</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;16</span>&nbsp;<span style="color: #008000"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;get_max(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">offa,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">b,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">offb)<br /></span><span style="color: #008080">&nbsp;17</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">*</span><span style="color: #000000">offa&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br /></span><span style="color: #008080">&nbsp;19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">&nbsp;20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">offb)</span><span style="color: #000000">--</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;b[</span><span style="color: #000000">*</span><span style="color: #000000">offb</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #008080">&nbsp;22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">&nbsp;23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">*</span><span style="color: #000000">offb&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br /></span><span style="color: #008080">&nbsp;24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">&nbsp;25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">offa)</span><span style="color: #000000">--</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a[</span><span style="color: #000000">*</span><span style="color: #000000">offa</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #008080">&nbsp;27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">&nbsp;28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;29</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(a[</span><span style="color: #000000">*</span><span style="color: #000000">offa]&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;b[</span><span style="color: #000000">*</span><span style="color: #000000">offb])<br /></span><span style="color: #008080">&nbsp;30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">&nbsp;31</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">offa)</span><span style="color: #000000">--</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;32</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a[</span><span style="color: #000000">*</span><span style="color: #000000">offa</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #008080">&nbsp;33</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;34</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">offb)</span><span style="color: #000000">--</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;35</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;b[</span><span style="color: #000000">*</span><span style="color: #000000">offb</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #008080">&nbsp;36</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">&nbsp;37</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">&nbsp;38</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;39</span>&nbsp;<span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">类似get_max,是取最小的数。<br /></span><span style="color: #008080">&nbsp;40</span>&nbsp;<span style="color: #008000"></span><span style="color: #008000">//</span><span style="color: #008000">n是数组大小。</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;41</span>&nbsp;<span style="color: #008000"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;get_min(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">offa,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">b,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">offb,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n)<br /></span><span style="color: #008080">&nbsp;42</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;43</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">*</span><span style="color: #000000">offa&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;n)<br /></span><span style="color: #008080">&nbsp;44</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">&nbsp;45</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">offb)</span><span style="color: #000000">++</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;46</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a[</span><span style="color: #000000">*</span><span style="color: #000000">offb</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #008080">&nbsp;47</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">&nbsp;48</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">*</span><span style="color: #000000">offb&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;n)<br /></span><span style="color: #008080">&nbsp;49</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">&nbsp;50</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">offa)</span><span style="color: #000000">++</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;51</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a[</span><span style="color: #000000">*</span><span style="color: #000000">offa</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #008080">&nbsp;52</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">&nbsp;53</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;54</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(a[</span><span style="color: #000000">*</span><span style="color: #000000">offa]&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;b[</span><span style="color: #000000">*</span><span style="color: #000000">offb])<br /></span><span style="color: #008080">&nbsp;55</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">&nbsp;56</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">offa)</span><span style="color: #000000">++</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;57</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a[</span><span style="color: #000000">*</span><span style="color: #000000">offa</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #008080">&nbsp;58</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;59</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">offb)</span><span style="color: #000000">++</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;60</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a[</span><span style="color: #000000">*</span><span style="color: #000000">offb</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #008080">&nbsp;61</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">&nbsp;62</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">&nbsp;63</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;64</span>&nbsp;<span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">这个就不解释了吧</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;65</span>&nbsp;<span style="color: #008000"></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;swap_i(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">b)&nbsp;<br /></span><span style="color: #008080">&nbsp;66</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;67</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;t&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">a;<br /></span><span style="color: #008080">&nbsp;68</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">b;<br /></span><span style="color: #008080">&nbsp;69</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;t;<br /></span><span style="color: #008080">&nbsp;70</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">&nbsp;71</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;72</span>&nbsp;<span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">主算法，输入是a，b两个数组即长度n<br /></span><span style="color: #008080">&nbsp;73</span>&nbsp;<span style="color: #008000"></span><span style="color: #008000">//</span><span style="color: #008000">返回交互后两组数据和的差。<br /></span><span style="color: #008080">&nbsp;74</span>&nbsp;<span style="color: #008000"></span><span style="color: #008000">//</span><span style="color: #008000">每次从两组数据里取最大和最小的组合起来，放到一边，次大和次小的放到另一边<br /></span><span style="color: #008080">&nbsp;75</span>&nbsp;<span style="color: #008000"></span><span style="color: #008000">//</span><span style="color: #008000">实际上这个算法不能保证找到最优解，应该使用动态规划法来求最优解。</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;76</span>&nbsp;<span style="color: #008000"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;swap_x(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">b,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n)<br /></span><span style="color: #008080">&nbsp;77</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;78</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;sa,&nbsp;sb,&nbsp;la,&nbsp;lb,&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">na,&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">nb,&nbsp;idx,&nbsp;delta,&nbsp;d;<br /></span><span style="color: #008080">&nbsp;79</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;na&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[n];<br /></span><span style="color: #008080">&nbsp;80</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;nb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[n];<br /></span><span style="color: #008080">&nbsp;81</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;idx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;82</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;delta&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;83</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sa&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;84</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;la&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;lb&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;85</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;86</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sort(a,&nbsp;a</span><span style="color: #000000">+</span><span style="color: #000000">n);<br /></span><span style="color: #008080">&nbsp;87</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sort(b,&nbsp;b</span><span style="color: #000000">+</span><span style="color: #000000">n);<br /></span><span style="color: #008080">&nbsp;88</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;89</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(idx&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;n</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)<br /></span><span style="color: #008080">&nbsp;90</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">&nbsp;91</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">先给A和B一边分配一个最大的</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;92</span>&nbsp;<span style="color: #008000"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;na[idx]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;get_max(a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">la,&nbsp;b,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">lb);<br /></span><span style="color: #008080">&nbsp;93</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nb[idx]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;get_max(a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">la,&nbsp;b,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">lb);<br /></span><span style="color: #008080">&nbsp;94</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;na[idx]&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;nb[idx];<br /></span><span style="color: #008080">&nbsp;95</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idx</span><span style="color: #000000">++</span><span style="color: #000000">;<br /></span><span style="color: #008080">&nbsp;96</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">然后一边分配一个最小的</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;97</span>&nbsp;<span style="color: #008000"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;na[idx]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;get_min(a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">la,&nbsp;b,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">lb,&nbsp;n);<br /></span><span style="color: #008080">&nbsp;98</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nb[idx]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;get_min(a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">la,&nbsp;b,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">lb,&nbsp;n);<br /></span><span style="color: #008080">&nbsp;99</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;na[idx]&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;nb[idx];<br /></span><span style="color: #008080">100</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idx</span><span style="color: #000000">++</span><span style="color: #000000">;<br /></span><span style="color: #008080">101</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">102</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(delta&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;d&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br /></span><span style="color: #008080">103</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">A这边总和比B的总和大了，然后新的数又是A这边大，则需要交换</span><span style="color: #008000"><br /></span><span style="color: #008080">104</span>&nbsp;<span style="color: #008000"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap_i(na</span><span style="color: #000000">+</span><span style="color: #000000">idx,&nbsp;nb</span><span style="color: #000000">+</span><span style="color: #000000">idx);<br /></span><span style="color: #008080">105</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap_i(na</span><span style="color: #000000">+</span><span style="color: #000000">idx</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;nb</span><span style="color: #000000">+</span><span style="color: #000000">idx</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">106</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">d;<br /></span><span style="color: #008080">107</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">108</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delta&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;d;<br /></span><span style="color: #008080">109</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">110</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">111</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">n为奇数，剩下两个数。</span><span style="color: #008000"><br /></span><span style="color: #008080">112</span>&nbsp;<span style="color: #008000"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(idx&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;n</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)<br /></span><span style="color: #008080">113</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">114</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(delta&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)<br /></span><span style="color: #008080">115</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">A总和大，把剩下最后一个小的给A</span><span style="color: #008000"><br /></span><span style="color: #008080">116</span>&nbsp;<span style="color: #008000"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;na[idx]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;get_min(a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">la,&nbsp;b,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">lb,&nbsp;n);<br /></span><span style="color: #008080">117</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nb[idx]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;get_max(a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">la,&nbsp;b,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">lb);<br /></span><span style="color: #008080">118</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">else</span><span style="color: #000000">{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">A总和小，把剩下的大数给A</span><span style="color: #008000"><br /></span><span style="color: #008080">119</span>&nbsp;<span style="color: #008000"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;na[idx]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;get_max(a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">la,&nbsp;b,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">lb);<br /></span><span style="color: #008080">120</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nb[idx]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;get_min(a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">la,&nbsp;b,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">lb,&nbsp;n);<br /></span><span style="color: #008080">121</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">122</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">123</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">124</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;memcpy(a,&nbsp;na,&nbsp;n</span><span style="color: #000000">*</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(a[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br /></span><span style="color: #008080">125</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;memcpy(b,&nbsp;nb,&nbsp;n</span><span style="color: #000000">*</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(b[</span><span style="color: #000000">0</span><span style="color: #000000">]);<br /></span><span style="color: #008080">126</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;na;<br /></span><span style="color: #008080">127</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;nb;<br /></span><span style="color: #008080">128</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;delta;<br /></span><span style="color: #008080">129</span>&nbsp;<span style="color: #000000">}</span></div><br /><br /></td></tr></tbody></table><img src ="http://www.cppblog.com/oldbug/aggbug/176875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oldbug/" target="_blank">nullpointer</a> 2012-05-31 09:17 <a href="http://www.cppblog.com/oldbug/archive/2012/05/31/176875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>写在前面的话</title><link>http://www.cppblog.com/oldbug/archive/2012/03/21/168493.html</link><dc:creator>nullpointer</dc:creator><author>nullpointer</author><pubDate>Wed, 21 Mar 2012 06:04:00 GMT</pubDate><guid>http://www.cppblog.com/oldbug/archive/2012/03/21/168493.html</guid><wfw:comment>http://www.cppblog.com/oldbug/comments/168493.html</wfw:comment><comments>http://www.cppblog.com/oldbug/archive/2012/03/21/168493.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/oldbug/comments/commentRss/168493.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/oldbug/services/trackbacks/168493.html</trackback:ping><description><![CDATA[在程序员这个职业上混了十年, 最美好的青春岁月都奉献给了它，可是却没有留下多少辉煌和灿烂的记忆。十年的岁月一晃就过去，仿佛比打酱油还快，其实，这些年真的是在打酱油。。。我知道我不会继续干多久的程序了，可是一旦离开，心中还是有些不舍。一直没有写技术博客的习惯，现在就当一个空的小本子吧，看看最后会在上面记录下点什么。<img src ="http://www.cppblog.com/oldbug/aggbug/168493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/oldbug/" target="_blank">nullpointer</a> 2012-03-21 14:04 <a href="http://www.cppblog.com/oldbug/archive/2012/03/21/168493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>