public class a2_9 { static int ans = 0; public static void main(String[] args) { for (int a = 2; a <= 2021; a++){ // 该编号各个位上的数 int q1 = a / 1000; int bai1 = (a / 100); int shi1 = (a / 10); int ge1 = (a - shi1 * 10); shi1 = shi1 - bai1 * 10; bai1 = bai1 - q1 * 10; // 初始化min没有哪一位数是大于10的所以取10; int min = 10; // 因为要到达每一个城邦. // 最短的桥,其实就是求到达该城邦所需付出代价,从之前的城邦中选一个与本城邦左连接。 // 这个问题可以转化为求本城邦各个位数中非零的最小值。 // e.g: 985 <- 980 // 25 <- 5 // 2021<- 2020 if (q1 != 0){ min = q1; } if (bai1 != 0){ min = Math.min(min, bai1); } if (shi1 != 0){ min = Math.min(min, shi1); } if (ge1 != 0){ min = Math.min(min, ge1); } ans += min; } // 这边本来是算特殊情况的就是 // 10, 20,30~~~,100,200~~1000,2000;20个,从1连他们要在上面循环上加一所以加20 // 但是10 可以通过 1->11->10;这样就不用加1了,你仔细想想. // 20 可以通过2->22->20. 或 2->21->20. // 这样实际的图连接的顺序就不一样了,但不影响计算数据. // ans += 20; System.out.println(ans); } }
第十二届蓝桥杯 ——城邦
最新推荐文章于 2024-05-04 09:21:31 发布