读书人

一个简单有关问题的效率思考

发布时间: 2012-02-26 20:19:45 作者: rapoo

一个简单问题的效率思考
百钱买百鸡问题,请高手指教.
#include <stdio.h>
void main()
{
int cock,hen,chicken; // 如果我多定义2个变量i=100/2,j=100/1.5
for(cock=1;cock <100/2;cock++)
/* 这里循环的时候是不是每次都要处理 100/2 ? cock <100/2 改成 cock <i 是不是效率要高些? */
{
for(hen=1;hen <100/1.5;hen++)
/* 这里循环的时候是不是每次也都要处理 100/1.5 ? hen <100/1.5 改成 cock <j 是不是效率要高些? */
{
for(chicken=1;chicken <100;chicken++)
{
if(cock+hen+chicken==100 &&cock*2+hen*1.5+chicken*0.5==100)
printf( "公鸡%d只,母鸡%d只,小鸡%d只.\n ",cock,hen,chicken);
}
}
}
}

[解决办法]
效率是一样的
因为 100/2 和 100/1.5 都是常数,因此在编译期就已算好了,不会在每次循环时再计算.
[解决办法]
你的两个特例, 一般编译器都会自动给你优化.

不过, 先计算循环条件, 总是个不坏的主意:))

读书人网 >C++

热点推荐