随笔-13  评论-0  文章-2  trackbacks-0

Problem Statement

    
***Note:  Please keep programs under 7000 characters in length.  Thank you
            Class Name: HowEasy
            Method Name: pointVal
            Parameters: String
            Returns: int
            TopCoder has decided to automate the process of assigning problem difficulty
            levels to problems.  TopCoder developers have concluded that problem difficulty
            is related only to the Average Word Length of Words in the problem statement:
            If the Average Word Length is less than or equal to 3,  the problem is a 250
            point problem.
            If the Average Word Length is equal to 4 or 5, the problem is a 500 point
            problem.
            If the Average Word Length is greater than or equal to 6, the problem is a 1000
            point problem.
            Definitions:
            Token - a set of characters bound on either side by spaces, the beginning of
            the input String parameter or the end of the input String parameter.
            Word - a Token that contains only letters (a-z or A-Z) and may end with a
            single period. A Word must have at least one letter.
            Word Length - the number of letters in a Word. (NOTE: a period is NOT a letter)
            The following are Words :
            "ab",  "ab."
            The following are not Words :
            "ab..", "a.b", ".ab", "a.b.", "a2b.", "."
            Average Word Length - the sum of the Word Lengths of every Word in the problem
            statement divided by the number of Words in the problem statement.  The
            division is integer division. If the number of Words is 0, the Average Word
            Length is 0.
            Implement a class HowEasy, which contains a method pointVal.  The method takes
            a String as a parameter that is the problem statement and returns an int that
            is the point value of the problem (250, 500, or 1000). The problem statement
            should be processed from left to right.
            Here is the method signature (be sure your method is public):
            int pointVal(String problemStatement);
            problemStatement is a String containing between 1 and 50 letters, numbers,
            spaces, or periods.  TopCoder will ensure the input is valid.
            Examples:
            If problemStatement="This is a problem statement", the Average Word Length is
            23/5=4, so the method should return 500.
            If problemStatement="523hi.", there are no Words, so the Average Word Length is
            0, and the method should return 250.
            If problemStatement="Implement a class H5 which contains some method." the
            Average Word Length is 38/7=5 and the method should return 500.
            If problemStatement=" no9 . wor7ds he8re. hj.." the Average Word Length is 0,
            and the method should return 250.

Definition

    
Class: HowEasy
Method: pointVal
Parameters: string
Returns: int
Method signature: int pointVal(string param0)
(be sure your method is public)
    

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.

    
Class:
HowEasy
Method:
pointVal
Parameters:
string
Returns:
int
Method signature:
int pointVal(string param0)
(be sure your method 
is public)
Accept: 
79.60

#include
<string>
#include
<cctype>
#include
<sstream>
using namespace std;

class HowEasy {
public:
    
int pointVal(string param0){
    istringstream 
is(param0);
    
string str;
    
int word = 0, token = 0;
    
while(is >> str) {
            
int temp = 0;
            
if(str == "."continue;
        
for(int i = 0; i < str.size(); i++{
            
if(isalpha(str[i])) temp++;
            
else if(str[i] == '.' && str.size() - 1 == i)
            
break;
            
else { temp = 0break; }
        }

        
if(temp) {
            token 
+= temp;
            word
++;
            }

    }

    
if(!word) return 250;
    
if(token / word <= 3return 250;
    
if(token / word <= 5return 500;
    
return 1000;
    }

}
;
比较受打击。才那么点分数,以后要加油啊。
贴一个249.97 的代码。
 1#include <string>
 2using namespace std;
 3class HowEasy
 4{
 5public:  int pointVal(string param0)  
 6{   
 7      int i=0,j=0,k=0,t=0,ac=0;    
 8      for(;param0[i-1]!=0;i++)
 9      if(param0[i]==0||param0[i]==' ')
10      {
11        j++;
12        ac+=(t==0)*k;
13        t=k=0;
14      }

15      else if(t==0)
16          if(param0[i]>57)
17            k++;
18          else if(!(param0[i]=='.'&& param0[i+1]==0&&k>0)&&!(param0[i]=='.'&& param0[i+1]==' '&&k>0))
19              t=1;
20    if(j==0)
21      return(250);
22    if(ac/j<=3)
23      return(250);
24    if(ac/j<=5
25     return(500);
26    return(1000);
27  }

28}
;
29
posted on 2009-04-19 20:37 亦夏 阅读(417) 评论(0)  编辑 收藏 引用 所属分类: TopCoder

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理