演算法教科書提到dynamic programming,當初課本只有兩個範例,所以其實讀的不是很懂,這兩天我又去書局罰站了,翻了一下培養與鍛鍊程式設計的邏輯腦。
前情提要: <http://ithelp.ithome.com.tw/question/10076977 >
其實dynamic programming只是用二維或者三維array把之前算過的值儲存起來,碰到一樣的狀況,就直接查表就好,大家都知道查表可以很快,就不用丟到遞迴裡或者loop裡去跑了。不過我相信以mis的programming應用角度而言,不要說dynamic programming,連遞迴我也只用過兩次。
另外瀏覽一下放在他隔壁的Short Coding 寫出簡捷好程式-短碼達人的心得技法。
不過這本書是會讓人頭暈的書,很多觀念以前都讀過,
有些小技巧的確在不失可毒性的狀況下,可以讓程式更短,甚至縮短巢狀level,讓程式更好看,有空可以看看啦,但我真的如果如書這樣寫出來,我自己都會頭暈吧。N年前我自己寫的code,我也暈了...
char *
OrgUnit::formatSql(char *iStr) {
char *rSql = new char[1024];
char *str = iStr;
strcpy(rSql,sqlInsPrefix);
char *ptr = rSql+strlen(rSql);
*ptr++ = '\'';
int iCnt = 1;
while( (*str != NULL) && iCnt <= 5 ) {
switch(*str) {
case '\'':
str++;
break;
case ',':
iCnt++;
str++;
break;
default:
*ptr = *str;
ptr++;
str++;
break;
}
}
*ptr++ = '\'';
*ptr++ = ',';
*ptr++ = '\0';
strcat(rSql,iStr);
switch(iCnt) {
case 1:
strcat(rSql,",\'\',\'\',\'\'");
break;
case 2:
strcat(rSql,",\'\',\'\'");
break;
case 3:
strcat(rSql,",\'\'");
break;
default:
break;
}
strcat(rSql,sqlInsPostfix);
return rSql;
}
上面這是甚麼鬼啊?
有請您來告訴我們呀
哈哈,重點是連我「看不懂」。
這個我要好好反省,多少同事接我的code的人的痛。
我竟然看懂了,不就是把SQL的參數補齊嗎??我一定是見鬼了....
總裁大大好神喔,佩服佩服!!!!