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

无助啊,同样的算法,要翻译成c++代码才能过。java一直超时!谁能把这个java代码改ac???在不修改算法的前提下

Posted by taylor_tao at 2010-06-05 12:25:02 on Problem 1088
无助呀!!!
import java.util.Scanner;

/**
 *
 * @author taylor
 */
public class Main {

    private static int[][] height = null;
    private static int[][] distance = null;
    private static int rowI = 0;
    private static int colI = 0;
    private static int ansI = 0;
    private static boolean isAltered = false;

    private static void deal(int forej, int forek, int j, int k){
        if (forej < 0 || forej >= rowI) {
            return;
        }
        if (forek < 0 || forek >= colI) {
            return;
        }
        if (height[forej][forek] <= height[j][k]) {
            return;
        }
        int tmpI = distance[forej][forek] + 1;
        if (tmpI > distance[j][k]) {
            distance[j][k] = tmpI;
            isAltered = true;
        }
    }

    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        rowI = in.nextInt();
        colI = in.nextInt();
        ansI = 1;
        isAltered = false;
        height = new int[rowI][colI];
        distance = new int[rowI][colI];
        for (int i = 0; i < rowI; i++) {
            for (int j = 0; j < colI; j++) {
                height[i][j] = in.nextInt();
                distance[i][j] = 1;
            }
        }
        int totalI = rowI * colI;
        for (int i = 0; i < totalI; i++) {
            isAltered = false;
            for (int j = 0; j < rowI; j++) {
                for (int k = 0; k < colI; k++) {
                    deal(j - 1, k, j, k);
                    deal(j + 1, k, j, k);
                    deal(j, k - 1, j, k);
                    deal(j, k + 1, j, k);
                }
            }
            if (!isAltered) {
                break;
            }
        }
        for (int i = 0; i < rowI; i++) {
            for (int j = 0; j < colI; j++) {
                if (distance[i][j] > ansI) {
                    ansI = distance[i][j];
                }
            }
        }
        System.out.println(ansI);
        
    }
}

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