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 | |||||||||||||
| |||||||||||||
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.
Public Class HowEasy
Public Function pointVal(ByVal param0 As String) As Integer
Dim words() As String = Split(param0)
Dim a As Integer, b As Integer, avg As Integer
b = words.Length
If Trim(param0) = Nothing Or words(0)(0) = Nothing Then
Return 250
Else
Dim i As Integer, j As Integer
For i = 0 To words.Length - 1
If Not (Char.IsLetter(words(i)(0))) Then
b -= 1
Else
For j = 0 To words(i).Length - 1
If Not (Char.IsLetter(words(i)(j))) Or words(i)(j) = "." Then
b -= 1
Exit For
Else
If Char.IsLetter(words(i)(j)) Then
a += 1
End If
End If
Next
End If
Next
If b <= 0 Then
Return 250
Else
avg = Int(a / b)
If avg < 3 Or avg = 3 Then
Return 250
ElseIf avg = 4 Or avg = 5 Then
Return 500
Else
Return 1000
End If
End If
End If
End Function
End Class
Public Function pointVal(ByVal param0 As String) As Integer
Dim words() As String = Split(param0)
Dim a As Integer, b As Integer, avg As Integer
b = words.Length
If Trim(param0) = Nothing Or words(0)(0) = Nothing Then
Return 250
Else
Dim i As Integer, j As Integer
For i = 0 To words.Length - 1
If Not (Char.IsLetter(words(i)(0))) Then
b -= 1
Else
For j = 0 To words(i).Length - 1
If Not (Char.IsLetter(words(i)(j))) Or words(i)(j) = "." Then
b -= 1
Exit For
Else
If Char.IsLetter(words(i)(j)) Then
a += 1
End If
End If
Next
End If
Next
If b <= 0 Then
Return 250
Else
avg = Int(a / b)
If avg < 3 Or avg = 3 Then
Return 250
ElseIf avg = 4 Or avg = 5 Then
Return 500
Else
Return 1000
End If
End If
End If
End Function
End Class
不行啊,好像问题还是挺大的,首先是理解方面都是英文的,起码要看上2遍才能理解
其次,在coding 过程中,在除数会产生零和循环中的IF方面
修正中。。。
果然,长时间没动手了,问题大了。。。