我最近参加了Codesprint2。我无法提交以下问题的解决方案。http://www.spoj.pl/problems/COINTOSS/ (我已经在spoj上发布了问题陈述的链接,因为代码印记链接需要登录)
我检查了一个成功的解决方案( url:http://pastebin.com/uQhNh9Rc ),使用的逻辑与我的完全相同,但我仍然得到“错误的答案”。
如果有人能告诉我我犯了什么错误,我会非常感谢,因为我找不到它。谢谢。
我的代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.util.StringTokenizer;
public class Solution
{
static double solve( int n, int m )
{
if( m==n )
return 0;
if( m==0 )
return ( Math.pow( 2, n+1 ) - 2 );
else
{
double res = 1 + ( Double )( solve( n, m+1 ) + solve( n, 0 ))/2;
return res;
}
}
public static void main( String[] args ) throws IOException
{
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ));
int n, m;
int t = Integer.parseInt( br.readLine() );
StringTokenizer tok;
String s;
for( int T=0; T<t; T++ )
{
s = br.readLine();
tok = new StringTokenizer( s );
n = Integer.parseInt( tok.nextToken() );
m = Integer.parseInt( tok.nextToken() );
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(2);
System.out.println( df.format ( solve( n, m ) ));
}
}}
发布于 2012-01-10 13:54:54
您的solve()中的逻辑似乎与公认的解决方案并不完全相同。Python版本针对M >= N进行测试,而您的版本针对M == N进行测试,因此有一整类输入会导致您的程序无法按预期运行。
https://stackoverflow.com/questions/8799052
复制相似问题