jc65494728 2008-7-24 23:32
关于c的一些看法
上次写了到现在都没发出来不知怎么回事......不会明天就出来了八,呵呵,今天没事............简单说下,不是高深的东西,大家不要见笑,这次先保存起来,不要又白写了
简单说,想到说这个还是看到编程区一道分钱的问题....好,在这我也给出道题:30人搬45块砖,一男(i)搬3块,一女(j)搬2块,三小孩(k)搬1块,问各有多少人 很简单,一道穷举法的列子
节约时间,直接给核心代码
用c了 呵呵
for(i=0;i<=30;i++)
for(j=0;j<=30;j++)
for(k=0;k<=30;k++)
{ ........................................ }
直接些出来,穷举暴力破解阿 和呵呵
那稍微动动脑子
for(i=0;i<=15;i++)
for(j=0;j<=22;j++)
{k=30-i-j;...................}
看看第一种循环了几次,第二呢 现在身边一些朋友或一些编程的都会忽视这个效率的问题
在初步学习编程,程序不是很复杂,感觉不到代码优差性时,往往会因为编译成功而很开心,而忽视了程序很重要的效率问题,一旦代码加长变复杂时,往往问题随之而来,这时你才指针的魅力你就晚了....所以现在请带着它走..........(.呵呵,当然还有格式和注释的习惯也需养成 ,以上代码还可以进一步优化,有兴趣者可以尝试)
此文因一个星期前的同类一文写了没发出来而写,看到了莫笑我阿!!
----我们程序员能做的,就千万不要留给cpu去做
521322132 2008-7-25 17:29
是的,效率很重要,希望学程序设计的人都注意哦!
duguyue100 2008-7-25 20:31
给个pascal代码
program ex;
var i,j,k,n : longint;
begin
for i:=0 to 15 do
for j:=0 to 20 do
for k:=0 to 45 do
begin
if i+j+k=45 then write('men:',i:5,'women:',j:5,'children:',k:5);
end;
readln(n):
end.
这也是个简单穷举方法,还有更加优化的,楼主说的很有道理,因为有的算法必须要优化,最实际的一点是,国际信息学奥赛要求1秒内玩成程序,要是循环用的过多肯定会耽误时间哈
610548422 2008-7-26 12:24
用FOR循环
大的放近内层
编程小猪 2008-7-28 01:13
的确,效率很重要,编程魔方有一个关于分钱的问题,回复都有10多页了,还没发现能很好处理这个问题的代码。
其实,循环次数可以更少的,因为,男人搬了3块后就只剩下42块了,女人就应该小于22,以此类推。我将编程魔方那个分钱的问题写了三种算法,将一元钱换十元,也就是将循环提高到1000次,发现所用时间成倍速的差别。
fys007 2008-8-5 07:50
正在学习中,
不过觉的编程好难学的
唉,
::07:: ::11:: ::11:: ::11:: ::11:: ::11:: ::11:: ::07:: ::07:: ::07::
395695015 2008-8-10 21:11
楼主还不错呵!原来学过,不过现在早就忘干净了!
youyoum4a1 2008-8-11 23:48
程序有时还会注意效率,不过没有加注释的习惯,感觉这个很难养成
vinwujiahua 2008-8-19 16:38
[quote]原帖由 [i]fys007[/i] 于 2008-8-5 07:50 发表 [url=http://www.hackerxfiles.net/redirect.php?goto=findpost&pid=865934&ptid=113150][img]http://www.hackerxfiles.net/images/common/back.gif[/img][/url]
正在学习中,
不过觉的编程好难学的
唉,
::07:: ::11:: ::11:: ::11:: ::11:: ::11:: ::11:: ::07:: ::07:: ::07:: [/quote]同意的呀
氵目 2008-8-20 21:13
en ````````````正在学习中``````::16:: ::16::