好奇就去TOPCODER闲逛。无聊的时候,去这里做做题还是挺有意思的。
毕竟是以生活中的例子来写吧。和ACM比赛不同的是,这个直接写个类就可以了。不用写MAIN,害我弄了半天。
就比如这个250分的题目,初次用,用来测试以下而已。
我的代码如下:(代码有点长- -!比较搞笑的是,题目说不要超过7000字符,我想谁会写这么多?)
import java.util.*;
public class HowEasy
{
public static void main(String[] args)
{
HowEasy p = new HowEasy();
String[] s = {"This is a problem statement","523hi."," no9 . wor7ds he8re. hj.."};
System.out.println(p.pointVal(s[1]));
}
public int pointVal(String str)
{
String[] buffer = new String[50];
StringTokenizer wordFactory = new StringTokenizer(str);
int length = 0;
int i =0;
int j;
int wCount = 0;
int wordLength = 0;
char ch;
int averageLen;
while(wordFactory.hasMoreTokens())
{
buffer[i] = wordFactory.nextToken(" ");
++i;
}
length = i;
for(i=0;i<length;++i)
{
for(j=0;j<buffer[i].length();++j)
{
ch = buffer[i].charAt(j);
if((buffer[i].length()>0) && Character.isLetter(ch))
{
if(ch=='.'&& (j!=buffer[i].length()-1))
{
break;
}
}
else
break;
}
if(j==buffer[i].length())
{
wCount++;
wordLength += buffer[i].length();
}
}
System.out.println("Words: "+wCount+" wordLength: "+wordLength);
if(wCount==0)
averageLen = 0;
else
averageLen = wordLength/wCount;
if(averageLen >=0 && averageLen <= 3)
return 250;
else if(averageLen==4 || averageLen==5)
return 500;
else if(averageLen>=6)
return 100;
else
return 0;
}
}
可能用时间比较多,250分,我实际就得了230!
责任编辑:小草