Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么相同的思路却是不同的结果

Posted by 0527403038 at 2008-04-11 12:14:15 and last updated at 2008-04-11 12:15:25
对于1163题,我先采用的是如下的代码:
import java.util.*;
import java.io.*;
public class Main {
	static  int list[];
	private static int f(int n,int i,int N)
	{
		if(n>N)
			return 0;
		else
			return list[n*(n-1)/2+i-1]+(f(n+1,i,N)>f(n+1,i+1,N)? f(n+1,i,N):f(n+1,i+1,N));
		
	}
	public static void main(String[] args)throws Exception
	{
			int N;
			//System.out.println("请输入三角数列的层数:");
			Scanner cin=new Scanner(System.in);
			N=cin.nextInt();
			int length=(N+1)*N/2;
			list=new int[length];
			//System.out.println("请输入三角数列元素:");
			for(int i=0;i<length;i++)
				list[i]=cin.nextInt();
			//System.out.println("三角数列结果:");
			System.out.println(f(1,1,N));		
	}
}
但是总是不能WA,Runtime error!
然后用这个代码就没错:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


public class Main {

	
	public static void main(String[] args) throws Exception{
	
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int num = Integer.parseInt(in.readLine());
		int [][]number = new int[num][num];
		for(int i=0;i<num;i++){
			String str = in.readLine();
			StringTokenizer strToke = new StringTokenizer(str);
			for(int j=0;j<=i;j++){
				number[i][j] = Integer.parseInt(strToke.nextToken());
			}
		}
		for(int i=num-2;i>=0;i--){
			for(int j=0;j<=i;j++){
				number[i][j] = Math.max(number[i+1][j], number[i+1][j+1])+number[i][j];
			}
		}
		
		System.out.println(number[0][0]);
	}

}
难道是递归函数的问题?

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator