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