您的位置:首页 > 编程语言

京东2015 笔试 编程题

2014-10-13 10:37 363 查看


int dp(int[] a, int n, int m)
{
int[][] s = new int
[m + 1];
for(int i = 0; i < n; i++)
for(int j = 1; j <= m; j++)
if(i == 0)
s[i][j] = a[i] == j ? a[i] : -1;
else if(j < 10)
s[i][j] = a[i] == j ? a[i] : s[i - 1][j];
else {
s[i][j] = s[i - 1][j];
if(j % a[i] == 0 && s[i][j / a[i]] > 0 && (s[i][j] < 0 || s[i][j / a[i]] * 10 + a[i] < s[i][j]))
s[i][j] = s[i][j / a[i]] * 10 + a[i];
}
return s[n - 1][m];
}


测试用例

public static void main(String[] args)
{
int[] a = new int[] { 2, 3, 4, 5, 6, 7, 8, 9 };
int n = a.length;
System.out.println(new Test().dp(a, n, 36));
System.out.println(new Test().dp(a, n, 100));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: