网站大量收购独家精品文档,联系QQ:2885784924

测试--经典程序汇编.doc

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

1、摆花(NOIP2012第3题) 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆。通过调 查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号。为了在门口展出更多种花, 规定第 i 种花不能超过 ai 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到 大的顺序依次摆列。 试编程计算,一共有多少种不同的摆花方案。 【输入】 输入文件 flower.in,共 2 行。 第一行包含两个正整数 n 和 m,中间用一个空格隔开。 第二行有 n 个整数,每两个整数之间用一个空格隔开,依次表示 a1、a2、……an。 【输出】 输出文件名为 flower.out。 输出只有一行,一个整数,表示有多少种方案。注意:因为方案数可能很多,请输出方案数对 1000007 取模的结果。 【输入输出样例 1】 flower.inflower.out2 4 3 22【输入输出样例说明】 有 2 种摆花的方案,分别是(1,1,1,2), (1,1,2,2)。括号里的 1 和 2 表示两种花, 比如第一个方案是前三个位置摆第一种花,第四个位置摆第二种花。 【数据范围】 对于 20%数据,有 0n≤8,0m≤8,0≤ai≤8; 对于 50%数据,有 0n≤20,0m≤20,0≤ai≤20; 对于 100%数据,有 0n≤100,0m≤100,0≤ ai≤100。 [算法分析]二维递推 公式:F[I,j]表示I种花到j盆的种数,则F[I,j]=f[i-1,j]+f[i-1,j-1]+……+f[i-1,j-a[i]]; 其中,边界是: f[1,i]=1 0=i=a[1] F[I,0]=1 0=i=n var f:array[0..101,0..101] of longint; a:array[0..101] of longint; n,m,i,j,k:longint; begin readln(n,m); for i:=1 to n do read(a[i]); for i:=0 to a[1] do f[1,i]:=1; for i:=0 to n do f[i,0]:=1; for i:=2 to n do for j:=1 to m do for k:=j downto j-a[i] do if k=0 then begin f[i,j]:=f[i,j]+f[i-1,k]; f[i,j]:=f[i,j] mod 1000007; end; writeln(f[n,m]); end. 2、P1087《Car的旅行路线》 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个机场,分别位于一个矩形的四个顶点上,同??个城市中两个机场之间有一条笔直的高速铁路,第i个城市中高速铁路的单位里程价格为ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t,如图1给出了3个城市的一个示例。 城市B的路线才能尽可能的节省花费呢?她发现这并不是一个简单的问题,于是她来向你请教。你的任务是找出一条从城市A到城市B的旅游路线,出发和到达城市中的机场可以任意选取,要求总的花费最少。 输入 第一行有四个正整数s,t,A,B。s(0s=100)表示城市的个数,t表示飞机单位里程的价格,A,B分别为城市A,B的序号,(1=A,B=s)。接下来有s行,其中第i行均有7个正整数xi1,yi1,xi2,yi2,xi3,yi3,ti,这当中的(xi1,yi1),(xi2,yi2),(xi3,yi3)分别是第i个城市中任意三个机场的坐标,ti为第i个城市高速铁路单位里程的价格。 输出 输出最小费用,小数点后保留2位。 示例输入 car.in 3 10 1 3 1 1 1 3 3 1 30 2 5 7 4 5 2 1 8 6 8 8 11 6 3 示例输出 car.out 47.55 [分析]首先是想到骗分,考虑特殊情况,如果要到的两个城市一样,则输出“0.00”,那么可以得到一个点的分数(共6个点)。 用A数组保存每个城市四个点的坐标,以及铁路价格。 A[1,1]、A[1,2]表示第1个点的坐标,A[1,3]、A[1,4]表示第2个点的坐标,A[1,5]、A[1,6]表示第3个点的坐标,A[1,9]表示铁路价格。 下面的任务是求出第4个点的坐标,方法是:直角顶点的坐标是(x1,y1),另外两点的坐标是(x2

文档评论(0)

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

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

1亿VIP精品文档

相关文档