碧海潮声大学生网
标题:
给大家一道程序题目做做
[打印本页]
作者:
枫
时间:
2005-5-26 22:29
提示:
作者被禁止或删除 内容自动屏蔽
作者:
笨笨啊
时间:
2005-5-27 07:50
<P>最常规的作法:</P>
<DIV class=quote>
<P>.子程序 __启动窗口_创建完毕</P>
<P>求深1 (10, 2, 1)<br>求深1 (20, 3, 1)</P>
<P><br>.子程序 求深1<br>.参数 n, 整数型<br>.参数 u, 整数型<br>.参数 d, 整数型<br>.局部变量 t, 整数型</P>
<P>.如果真 (n ≥ u 且 n ≤ 100) ' 判断条件<br> .判断循环首 (n > 0) ' 当总长度还是为0时进行循环<br> n = n - u<br> t = t + 1<br> .如果真 (n > 0) ' 未到地面<br> n = n + d<br> t = t + 1<br> .如果真结束</P>
<P> .判断循环尾 ()<br> 输出调试文本 (t)<br>.如果真结束</P></DIV>
<P>最后的输出是:</P>
<DIV class=quote>* 17<br>* 19<br></DIV>
[此贴子已经被作者于2005-5-27 7:50:56编辑过]
作者:
笨笨啊
时间:
2005-5-27 08:04
标题:
方法2
<DIV class=quote>
<P>.子程序 __启动窗口_创建完毕</P>
<P>求深1 (10, 2, 1)<BR>求深1 (20, 3, 1)<BR>求深2 (10, 2, 1)<BR>求深2 (20, 3, 1)</P>
<P>.子程序 求深1<BR>.参数 n, 整数型<BR>.参数 u, 整数型<BR>.参数 d, 整数型<BR>.局部变量 t, 整数型</P>
<P>.如果真 (n ≥ u 且 n ≤ 100) ' 判断条件<BR> .判断循环首 (n > 0) ' 当总长度还是为0时进行循环<BR> n = n - u<BR> t = t + 1<BR> .如果真 (n > 0) ' 未到地面<BR> n = n + d<BR> t = t + 1<BR> .如果真结束</P>
<P> .判断循环尾 ()<BR> 输出调试文本 (t)<BR>.如果真结束</P>
<P><BR>.子程序 求深2<BR>.参数 n, 整数型<BR>.参数 u, 整数型<BR>.参数 d, 整数型<BR>.局部变量 t, 小数型</P>
<P>.如果真 (n ≥ u 且 n ≤ 100) ' 判断条件<BR> ' 设滑过的时间是t,则向上的时间为t+1,则<BR> ' n=u*(t+1)-d*t<BR> ' 所以t=(n-u)/(u-d)<BR> ' T=2t+1<BR> t = (n - u) ÷ (u - d)<BR> .如果真 (t ≠ 四舍五入 (t, 0)) ' 如果t不是整数,则取大于此数的整数<BR> t = 取整 (t) + 1<BR> .如果真结束<BR> t = 2 × t + 1<BR> 输出调试文本 (t)<BR>.如果真结束</P></DIV>
<P>正在编译现行易程序...<BR>正在预处理现行易程序...<BR>正在进行名称连接...<BR>正在统计需要编译的子程序<BR>正在编译“窗口程序集1”中的“__启动窗口_创建完毕”子程序<BR>正在编译“窗口程序集1”中的“求深1”子程序<BR>正在编译“窗口程序集1”中的“求深2”子程序<BR>正在生成主程序入口代码<BR>程序代码编译成功<BR>正在封装易格式目的代码<BR>开始运行被调试易程序<BR>* 17<BR>* 19<BR>* 17<BR>* 19<BR>被调试易程序运行完毕</P>
作者:
枫
时间:
2005-5-27 15:45
提示:
作者被禁止或删除 内容自动屏蔽
作者:
枫
时间:
2005-5-27 16:00
提示:
作者被禁止或删除 内容自动屏蔽
作者:
笨笨啊
时间:
2005-5-27 17:27
<DIV class=quote><B>以下是引用<I>枫</I>在2005-5-27 15:45:01的发言:</B><BR>
<P>笨笨,真佩服你写伪代码的技术,让人看了一目了然。</P></DIV>
<P>老实说,这不是伪代码。这是<STRONG>易语言</STRONG>的文本型代码,在IDE中查看是这个样子的。看帖图。
<P><BR></P>
<BR>
作者:
笨笨啊
时间:
2005-5-27 17:31
<DIV class=quote><B>以下是引用<I>枫</I>在2005-5-27 16:00:00的发言:</B><BR>
<P>我的算法和你不同,不过好像还你的算法好</P>
<P>以下是我用C++编写的一段代码</P>
<P>******************程序开始*****************************</P>
<P>#include <iostream.h></P>
<P>int main()<BR>{<BR>int n,u,d,climbs,minute;<BR>cin>>n;cin>>u;cin>>d;<BR>while(!(!n&&!u&&!d))<BR>{<BR> climbs=0;minute=0;<BR> while(1)<BR> {<BR> if(minute%2==0)<BR> { climbs=climbs+u;minute++;<BR> if(climbs>=n) break;<BR> }<BR> else<BR> { climbs=climbs-d;minute++;<BR> }<BR> }<BR> cout<<minute<<endl;<BR> cin>>n;cin>>u;cin>>d;<BR>}</P>
<P>return 1;<BR>}</P>
<P>******************程序结束*****************************</P>
<P>我没有对n,u,d范围进行限制是因为ACM JudgeOnline系统提供的测试用例都是不会超过这个范围的。呵呵!</P></DIV>
<P>你是通过判断是第几分钟来判断是上升还是下降,这样判断的次数增加了(%的次数),呵呵,个人感觉,我的第二种算法是我所想到的最优算法了。第一种算法是较常规的算法,不过好像也比你的这个算法次数少</P>
作者:
枫
时间:
2005-5-27 18:07
提示:
作者被禁止或删除 内容自动屏蔽
作者:
枫
时间:
2005-5-27 18:16
提示:
作者被禁止或删除 内容自动屏蔽
作者:
笨笨啊
时间:
2005-5-27 22:21
<P><a href="http://www.dywt.com.cn" target="_blank" >http://www.dywt.com.cn</A></P>
<P>纯中文的内核,汉语编程中目前我看来是最强的一个,还有一个中蟒也不错,不过重在算法,简易上比不上易</P>
作者:
枫
时间:
2005-5-27 23:51
提示:
作者被禁止或删除 内容自动屏蔽
作者:
笨笨啊
时间:
2005-5-28 07:30
<P><a href="http://www.0580hy.com/bbs/dispbbs.asp?boardID=20&ID=2775&page=1" target="_blank" >http://www.0580hy.com/bbs/dispbbs.asp?boardID=20&ID=2775&page=1</A></P>
<P>这里有程序下载+补丁</P>
欢迎光临 碧海潮声大学生网 (http://www.zjoubbs.com/)
Powered by Discuz! X3.2