当前位置: 首页 > news >正文

递归实现排列型枚举 Java

import java.util.*;
import java.io.*;

public class Main {
	static int n;
	static int[] arr; // 存放每行最终结果
	static boolean[] checked; // 标记已检查点

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		arr = new int[n + 1];
		checked = new boolean[n + 1];
		dfs(1); // 从1开始搜索
	}

	static void dfs(int pos) {
		if (pos > n) {
			for (int i = 1; i <= n; i++) {
				System.out.print(arr[i] + " ");
			}
			System.out.println();
            // return回溯继续搜索
		} else {
			for (int i = 1; i <= n; i++) {
				if (!checked[i]) {
					checked[i] = true;
					arr[pos] = i;
					dfs(pos + 1);
					checked[i] = false; // 重置标记状态
				}
			}
		}
	}
}

DFS模板题~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

相关文章:

  • Vue框架的编译器优化
  • 利用rpm编译工具mock生成精简容器镜像及源码编译全流程解析
  • CSS 学习提升网站或者项目
  • idea自动部署jar包到服务器Alibaba Cloud Toolkit
  • 聊聊 CSS
  • STEP认证是什么,STEP认证的意义?对企业发展好处
  • Android测试王炸:Appium + UI Automator2
  • pg_waldump无法定位WAL文件问题
  • 欧拉函数模板
  • 【Java设计模式】第1章 课程导学
  • Rust 是如何层层防错的
  • TDengine.C/C++ 连接器
  • 幻兽帕鲁(Palworld)在线工具集:让游戏体验更轻松!
  • HOOPS Visualize:跨平台、高性能的三维图形渲染技术解析
  • 基于STM32与应变片的协作机械臂力反馈控制系统设计与实现---5.1 工业机械臂实验平台系统化搭建指南
  • AIDD-人工智能药物设计-网络药理学-多组学与网络药理学分析揭示龟龄集治疗少精症的机制
  • er图讲解
  • 蓝桥杯嵌入式十四届模拟一(eeprom)
  • 【AI开源大模型工具链ModelEngine】【01】应用框架-源码编译运行
  • redis数据迁移之通过redis-dump镜像