| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么相同的思路却是不同的结果对于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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator