关于C程序算法的简化
上一篇 /
下一篇 2008-03-03 10:46:43
LUPA开源社区o7E:e)B n&|近一些天看了一些算法,发现用C写的基于类的几个算法比较不错:
j8pM!H'?QU0高复杂度的程序千千万万,但低复杂度程序是有限的,且常常是唯一的。变高复杂度算法为低复杂度算法有几个途径:LUPA开源社区/V!Zv.rvB
1.变嵌套多重的条件句为一重循环句:
LUPA开源社区+kCn5DJ v0l L(a例:所得税问题
k.SzUgW%jW0(y为所得税,x为月收入)。LUPA开源社区ef:\*Hc^Ud!sO
LUPA开源社区v*O2Gv
xT
|
q4?)L(z
Sgf9{9`0 +v;Mfc[mk0 |
0 ;x<=2000; |
| |
(x-2000)*3% ;2000<x<=5000; |
| y= |
(x-5000)*5%+90 ;5000<x<=10000; |
| |
(x-10000)*10%+340 ;10000<x<=100000; |
| |
(x-100000)*30%+9340 ;x>100000; |
W*IJYw"s} b4I Jg"f$b0
$e"T1w:N v;^-M6UP0常规思路:
p{Z!JB1H7o0用一个嵌套多重的条件语句:LUPA开源社区bB1AJ1AiE
xm5Y%u,G"_\
q0#include <stdio.h>LUPA开源社区dR;HoI
int main(/*int argc,char **argv*/)
4P~'B1E:AM2K0{
jc3a
a2U:D}1?3w0 flaot x,y;
(g'W/b|9}Ma!X0 scanf("%f",&x);LUPA开源社区.u$k}W$T[5t
if(x<=2000)LUPA开源社区&A.\&W}g
aV
y=0;LUPA开源社区 h'Gp_;O`qs
elseLUPA开源社区u z](o"H Y&Za
if(x<=5000)
{m#~-SO)CQ0 y=(x-2000)*0.03;
E`I^I(DV
R0 elseLUPA开源社区];y klTn
if(x<=10000)LUPA开源社区|!A6{;U(N&Zu
y=(x-5000)*0.05+90;