京东2015 笔试 编程题

来源:互联网 发布:steam 知乎 编辑:程序博客网 时间:2024/05/01 07:06


int dp(int[] a, int n, int m){int[][] s = new int[n][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));}



0 0
原创粉丝点击