ソースコード(Java)
import java.util.*;
public class Main {
static Scanner in = new Scanner(System.in);
static Character[][] nums;
static int w,h;
public static void main(String[] args) {
while(true){
w = in.nextInt();
h = in.nextInt();
if(w == 0){
break;
}
nums = new Character[w][h];
cache = new HashMap<Integer,java.math.BigInteger>();
for(int i=0;i<h;i++){
String line = in.next();
for(int j=0;j<w;j++){
nums[j][i] = line.charAt(j);
}
}
java.math.BigInteger val = java.math.BigInteger.ZERO;
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
if(Character.isDigit(nums[j][i])){
val = val.max(_rec(j,i));
}
}
}
System.out.println(val);
}
}
static HashMap<Integer,java.math.BigInteger> cache;
static java.math.BigInteger _rec(int x,int y){
if(x < 0 || y < 0 || !Character.isDigit(nums[x][y])){
return java.math.BigInteger.ZERO;
}
else if (cache.containsKey(y*w + x)){
return cache.get(y*w + x);
}
else {
cache.put(y*w + x
,new java.math.BigInteger(_rec(x-1,y).max(_rec(x,y-1)).toString().concat(nums[x][y].toString())));
return cache.get(y*w + x);
}
}
}
最終更新:2007年06月18日 15:36