iT邦幫忙

DAY 21
3

資訊學院的30門課系列 第 21

資訊學院的30門課-演算法(續)

演算法教科書提到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;

}

上面這是甚麼鬼啊?


上一篇
資訊學院的30門課-演算法與google code jam
下一篇
資訊學院的30門課-線性代數 Linear algebra
系列文
資訊學院的30門課30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
chiounan
iT邦研究生 1 級 ‧ 2011-10-19 09:44:57

哈哈有請您來告訴我們呀

krarm iT邦好手 1 級 ‧ 2011-10-19 18:53:30 檢舉

哈哈,重點是連我「看不懂」。
這個我要好好反省,多少同事接我的code的人的痛。

總裁 iT邦好手 1 級 ‧ 2011-10-19 19:50:34 檢舉

我竟然看懂了,不就是把SQL的參數補齊嗎??我一定是見鬼了....

krarm iT邦好手 1 級 ‧ 2011-10-22 09:37:24 檢舉

總裁大大好神喔,佩服佩服!!!!

我要留言

立即登入留言