简单粗暴地开他个十层循环(洛谷P2089题题解,Java语言描述)

题目要求

P2089题目要求

在这里插入图片描述
在这里插入图片描述

分析

既然是一定在1-3个,10种都要有,那么比起琢磨一种复杂算法,暴力求解是很好的思路啊!

既然是Java的连接,用StringBuilder就会较好。
不能直接打印StringBuilder,因为输出格式要求是先打印counter,所以用个LinkedList是不错的选择,指针费点结构性开销但能保证不用反复malloc和resize,我觉得比较合适啊。

代码比较暴力(十层循环),看代码的时候做好心理准备哈!

AC代码(Java语言描述)

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt(), counter = 0;
        scanner.close();
        List<StringBuilder> list = new LinkedList<>();
        for (int a = 1; a <= 3; a++) {
            for (int b = 1; b <= 3; b++) {
                for (int c = 1; c <= 3; c++) {
                    for (int d = 1; d <= 3; d++) {
                        for (int e = 1; e <= 3; e++) {
                            for (int f = 1; f <= 3; f++) {
                                for (int g = 1; g <= 3; g++) {
                                    for (int h = 1; h <= 3; h++) {
                                        for (int i = 1; i <= 3; i++) {
                                            for (int j = 1; j <= 3; j++) {
                                                if (a + b + c + d + e + f + g + h + i + j == num) {
                                                    counter++;
                                                    StringBuilder str = new StringBuilder();
                                                    str.append(a).append(" ").append(b).append(" ").append(c)
                                                            .append(" ").append(d).append(" ").append(e).append(" ")
                                                            .append(f).append(" ").append(g).append(" ").append(h)
                                                            .append(" ").append(i).append(" ").append(j);
                                                    list.add(str);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        System.out.println(counter);
        for (StringBuilder str : list) {
            System.out.println(str);
        }
    }
}

发布了355 篇原创文章 · 获赞 614 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104076950