二级java辅导:TopCoderTNT_INV_2001
来源:优易学  2011-6-10 18:25:14   【优易学:中国教育考试门户网】   资料下载   IT书店
 好奇就去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!

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训