Posted on 2009-12-26 17:28
rikisand 阅读(163)
评论(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 利用队列 只是题意不太好理解,最好把判断写成小函数,主程序会看起来比较清晰,不容易出错~ 一步一步来