277032
import java.util.Scanner; public class Single {//寻找单调数 int digit; int[][] inc; int[][] dec; public void init() { inc = new int[digit + 2][10]; dec = new int[digit + 2][10]; for (int a = 1; a < 10; a++) { inc[1][a] = 1; dec[1][a] = 1; } for (int i = 0; i <= 9; i++) { if (i < 2) { inc[2][i] = 9; } else { inc[2][i] = 10 - i; } } for (int i = 0; i <= 9; i++) { dec[2][i] = i; } } public static void main(String[] args) { Single t = new Single(); Scanner sc = new Scanner(System.in); t.digit = sc.nextInt(); long t1 = System.currentTimeMillis(); t.init(); System.out.println(t.sum(t.digit)); System.out.println("共用时\t" + (System.currentTimeMillis() - t1)); sc.close(); } public int incSum(int a, int b) {// a代表位数,b代表末尾数字(a>=3,0=<b<=9)递增数 int cou = 0; if (a == 0 || a == 1 && b == 0) { return 0; } if (a == 1) { return 1; } if (a == 2) { return inc[a][b]; } for (int c = b; c < 10; c++) { cou = cou + incSum(a - 1, c); } return cou + inc[a][b]; } public int decSum(int a, int b) {// a代表位数,b代表末尾数字(a>=3,0=<b<=9)递减数 int cou = 0; if (a == 0 || a == 1 && b == 0) { return 0; } if (a == 1) { return 1; } if (a == 2) { return dec[a][b]; } for (int c = 0; c <= b; c++) { cou = cou + decSum(a - 1, c); } return cou + dec[a][b]; } public int sum(int a) { int temp = 0; for (int i = 1; i <= a; i++) { for (int m = 0; m < 10; m++) { temp = temp + incSum(i, m) + decSum(i, m); } } return temp - a * 9; } }
关于tomcat启动后马上又自动关闭的问题,布布扣,bubuko.com
原文:http://blog.csdn.net/yinxianluo/article/details/23387053