Posted on 2009-12-26 17:28
rikisand 閱讀(173)
評論(0) 編輯 收藏 引用 所屬分類:
Topcoder 、
C/C++ 、
Algorithm
tchs-1 none 1000pt DFS 利用進入的方向劃分四個邊
tchs-2 250pt 直接算就行 我寫了2分 500pt 暴力可以過,但是判斷時候不能用stringstream 用算術判斷 也可以用構造法 1000pt 每一位有三種可能性
不用,保持不動,變化,分別遞歸計算value并更新結果即可,由于遞歸深度最多只有13層所以不會tle
另外也可以寫出基數為3的循環來遍歷每一種情況具體看代碼
for(i=0,A[0]++;A[i]>2;i++){
A[i]=0;A[i+1]++;
}
tchs-3 1000pt 要想使乘積最大,需要更多的3即可 500pt 又看錯題了 ~~~ft 要注意題目一定要看清楚
tchs-4 500pt 模擬題,好難懂 音樂的~ 可以都乘以16 用整數來計算 浮點會很煩~ 這種題思路要清晰 一步一步來
tchs-5 250pt 簡單題,注意使用double 可以用1.0*int就不用double()了還有 int(h+1e-9);
500pt 簡單題,把所有word提取出來然后排序,再依次插入標點即可,注意有些小技巧
Code Snippet
string wordSort(string s)
{
vector<string> SA,SB;
string A="",B="";
for(int i=0;i<s.size();i++)
if(s[i]>='A'&&s[i]<='Z'||(s[i]<='z'&&s[i]>='a')){
if(B!=""){
SB.push_back(B);B="";
}
A+=s[i];
}
else{
if(A!=""){
SA.push_back(A);A="";
}
B+=s[i];
}
if(A!="")SA.push_back(A);if(B!="")SB.push_back(B);
sort(SA.begin(),SA.end());string res="";
int i=0;
for(; i<SA.size()&&i<SB.size();i++)
if(s[0]>='A'&&s[0]<='Z'||(s[0]<='z'&&s[0]>='a'))
res=res+SA[i]+SB[i];
else
res=res+SB[i]+SA[i];
for(;i<SA.size();i++)res+=SA[i];
for(;i<SB.size();i++)res+=SB[i];
return res;
}
思路要清晰,兩個輪替記錄即可
1000pt 顯然的BFS 利用隊列 只是題意不太好理解,最好把判斷寫成小函數,主程序會看起來比較清晰,不容易出錯~ 一步一步來