10930 A-Sequence.ppt

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10930 A-Sequence.ppt

1 10930 : A-Sequence 星級 : ★★☆☆☆ 題組:Online-judge.uva.es PROBLEM SET Volume CIX 題號:Problem D 10930 : A-Sequence 解題者:薛祖淵 解題日期:2006年2月21日 題意:一開始先輸入一個 2 ≤ D ≤ 30 的整數,表示接下來要輸入的數列大小,然後給定一組正整數數列ai滿足1≤ a1 a2 a3 ... ak ... ≤ 1000 (嚴格遞增),其中ak值若等於前面其中兩個或更多的數相加的結果,那就要印出 This is not an A-sequence.,反之印出This is an A-sequence. (p.s.時間限制:1秒) 題意範例: Sample Input 2 1 2 3 1 2 3 10 1 3 16 21 25 70 100 243 245 306 Sample Output Case #1: 1 2 This is an A-sequence. Case #2: 1 2 3 This is not an A-sequence. Case #3: 1 3 16 21 25 70 100 243 245 306 This is not an A-sequence. 解法範例: Sample Input: 1 3 5 9 15 先讀1 = 1不在sum陣列中 = 將1加到陣列 (sum = {1}) 讀到2 = 3不在sum陣列中 = 將3加到陣列 (sum = {1, 3}) 將sum[0]+3加到陣列中 = sum = {1, 3, 4} 讀到5 = 5不在sum陣列中 = 將5加到陣列 (sum = {1, 3, 4, 5}) 將sum[0]+5, sum[1]+5, sum[2]+5加到陣列中 = sum = {1, 3, 4, 5, 6, 8, 9} 讀到9 = 9在sum陣列中 = This is not an A-sequence. 最主要的方法就是這樣,其他的只是為了加速所用的trick了。比如說,我為了加快知道x這個數在不在sum陣列中,我額外用了另外一個boolean陣列 In_sum[1001] 來記錄x是不是在sum陣列中(若In_sum[x]為true代表x在陣列中,若In_sum[x]為false代表不在)。 另外,在step 2中,將sum[0]+x, sum[1]+x, …, sum[n-1]+x這n個數加到sum陣列之前,可以利用In_sum這個boolean陣列知道這幾個數是不是已經在陣列中了如果已經在sum陣列中,就不要在加進去,這樣可以降低sum陣列中的元素個數。 解法: 我主要是用一個陣列sum[ ]來記錄目前有哪些數字是可以由前面的數字相加所得到的。因此,假設目前sum這個陣列中已經存了n個數字了,每當我讀到一個數字x,我先去檢查x這個數字在不在sum這個陣列中: 如果在 = This is not an A-sequence. 如果不在 = 必須將所有因為加了x後,可能相加得到的數加到sum陣列中。 也就是說: Step1:將x加到sum陣列後面 (sum[n] = x)。 Step2:將sum[0]+x,sum[1]+x,…,sum[n-1]+x這n個數加到sum陣列中,不斷重複上面工作…就可以知道判斷該數字是不A-sequence。 *

文档评论(0)

gshshxx + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档