用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:4不能在第三位,3与5不能相连。...

最近在看算法,看到这个题,觉得挺经典的,收起。

 

分析:

        1 、把问题归结为图结构的遍历问题。实际上6个数字就是六个结点,把六个结点连接成无向连通图,对于每一个结点求这个图形的遍历路径,所有结点的遍历路径就是最后对这  6个数字的排列组合结果集。
        2、 3,5不能相连:实际要求这个连通图的结点3,5之间不能连通, 可在构造图结构时就满足改条件,然后再遍历图。
        3、 不能有重复: 考虑到有两个2,明显会存在重复结果,可以把结果集放在TreeSet中过滤重复结果
        4、   4不能在第三位: 仍旧在结果集中去除满足此条件的结果。

 

package JingDian;import java.util.Iterator;
import java.util.TreeSet;public class numberRandom {String[] stra = {"1","2","2","3","4","5"};int n = stra.length;boolean[] visited = new boolean[n];String result = "";TreeSet<String> ts = new TreeSet<String>();int[][] a = new int[n][n];private  void searchMap(){for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(i==j){//图中对角线部分是无法访问的a[i][j]=0;}else{a[i][j]=1;}}            }//3和5不能相连a[3][5]=0;a[5][3]=0;//开始遍历for(int i=0;i<n;i++){search(i);}Iterator<String> it = ts.iterator();while(it.hasNext()){String str =it.next();//4不能在第三位if(str.indexOf("4")!=2){System.out.println(str);}}}//这是个深度优先的遍历private void search(int startIndex){visited[startIndex] = true; result = result + stra[startIndex];if(result.length() ==n){ts.add(result);}for(int j=0;j<n;j++){if(a[startIndex][j]==1&&visited[j]==false){search(j);}else{continue;}}//一个result结束后踢掉最后一个,寻找别的可能性,若没有的话,则继续向前踢掉当前最后一个result = result.substring(0,result.length()-1);visited[startIndex] = false;}public static void main(String[] args){new numberRandom().searchMap();}}

 

转载于:https://www.cnblogs.com/skylar/p/3671795.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WordPress导航菜单函数register_nav_menus() 和 wp_nav_menu()

导航菜单是每一个WordPress主题必须的元素&#xff0c;如果你要制作一个WordPress主题&#xff0c;那就必须熟悉WordPress导航菜单注册函数 register_nav_menus() 和 导航菜单调用函数wp_nav_menu() &#xff0c;这两个参数一般都是配合使用的。今天我们就一起来解释一下这两个…

LeetCode 16 3Sum Closest(最接近的3个数的和)

翻译 给定一个有n个整数的数组S&#xff0c;找出S中3个数&#xff0c;使其和等于一个给定的数&#xff0c;target。返回这3个数的和&#xff0c;你可以假定每个输入都有且只有一个结果。例如&#xff0c;给定S {-1 2 1 -4}&#xff0c;和target 1。那么最接近target的和是2。…

基因重组

1s / 32M 【问题描述】目前,科学家们正致力于对生物基因的重组进行深入研究。基因的物质载体是脱氧核糖核酸(DNA)。DNA 是一种仅由 A、T、G、C 四种基元构成的双螺旋结构的有机分子。DNA 的两条单链上,同一位置的两个基元是互相对应的。A 对 T,G 对 C,因此,我们只需用任意一条链…

Ubuntu下apache2启动、停止、重启、配置

Linux系统为Ubuntu 一、Start Apache 2 Server /启动apache服务 # /etc/init.d/apache2 start or $ sudo /etc/init.d/apache2 start 二、 Restart Apache 2 Server /重启apache服务 # /etc/init.d/apache2 restart or $ sudo /etc/init.d/apache2 restart 三、Stop Apache 2 …

day6笔记

一、上节回顾 list&#xff1a;li [1,2,3,5,a]增加&#xff1a;append&#xff1a;末尾加入追加 insert&#xff1a;插入&#xff0c;在任意位置&#xff0c;insert&#xff08;index,内容&#xff09; extend:迭代着加入&#xff0c;asc ----> ‘a’,‘s’,‘c’ [1,2,3] …

Android手游《》斗地主完整的源代码(支持单机和网络对战)

Android手游《斗地主》完整的源代码&#xff08;支持单机和网络对战&#xff09;下载。一个很不错的源代码。斗地主掌游是一个独特的国内社会斗地主棋牌游戏&#xff0c;之后玩家可以下载网上斗地主和全世界。掌游斗地主特点&#xff1a;1、只有一个主要的社会斗地主棋牌游戏。…

昨天的补给

2014-04-22 09:37 昨天主要改变了之前的布局。采用的是单选按钮。避免逻辑上需要判断。 2014-04-22 09:38 晚上给媳妇买了奶茶和德芙&#xff0c;她很开心。网易订购的项链到了&#xff0c;就是定制的文字多了&#xff0c;不是太好看。 转载于:https://www.cnblogs.com/jsRunne…

jQuery判断当前点击的是第几个li的代码

使用$(this).index()取得li的下标&#xff0c;下面是一个样式替换的例子&#xff1a; $("#aa li").click(function(){ $("#aa li").removeClass("class名字&#xff0c;多个class用空格分开"); $(this).addClass("class名字&#xff0c;多个…

条款46:需要类型转换的时候请为模板定义非成员函数

看看下面这个例子&#xff1a; 1 template<typename T>2 class Rational{3 public:4 Rational(const T & numerator, const T & denominator);5 const T numerator()const;6 const T denominator() const;7 };8 template<typename T>9 const R…

Wordpress菜单函数wp_nav_menu各参数详解及示例

https://blog.csdn.net/qq_37296622/article/details/82633833 注册菜单 首先要注册菜单&#xff0c;将以下函数添加至function.php函数里 register_nav_menus(array( PrimaryMenu>导航, friendlinks>友情链接, footer_nav>页脚导航)); add_theme_support(nav_menus)…

page对象

page对象指的是页面本身 查看当前page对象的字符串描述 转载于:https://www.cnblogs.com/liuliuyiming/p/7731704.html

Memcached总结三:Memcached常用命令及使用说明

一、存储命令 存储命令的格式&#xff1a; 12<command name> <key> <flags> <exptime> <bytes><data block>参数说明如下&#xff1a; <command name>set/add/replace<key>查找关键字<flags>客户机使用它存储关于键值对…

mysql.zip免安装版配置

MYSQL ZIP免安装版配置 1. 下载MySQL 选择自己想要的.本次安装.我使用的是mysql-5.6.17-winx64 地址:http://dev.mysql.com/downloads/mysql/ 2. 解压zip 文件. 在mysql 的根目录下找到 my-default.ini 复制出一个 my.ini 文件, 根据你需要的位置修改 my.ini 文件 a&#xf…

Html中CSS之去除li前面的小黑点,和ul、LI部分属性方法

https://blog.csdn.net/business122/article/details/7973638 <style type"text/css"> list-style:none; </style>

Day3:集合

一、集合的定义及特性 1.集合的特性 1.1 去重&#xff0c;把一个列表变成集合&#xff0c;就自动去重了 1.2 关系测试&#xff0c;测试两组数据之间的交集、差集等关系 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan list_1 [1,3,5,9,7,5,4] set_1 …

解决SQL命令行回退的问题

场景 在linux或者aix上安装后Oracle后&#xff0c;在SQL命令行下无法通过键盘的退格键回退&#xff0c;如下 解决方法 安装软件 # rpm -ivh rlwrap-0.41-1.el6.x86_64.rpm warning: rlwrap-0.41-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYPrep…

p740备件号

http://www.gzyuxing.net/machine/show-113.htmlhttp://www.fuyuanit.cn/index.php?mProduct&ashow&id258http://www.fuyuanit.cn/index.php?mProduct&ashow&id258扩展柜如何确定:标签上一般有字样&#xff0c;到ibm knowledge center搜索关键字 5877 parts即…

Android listview addHeaderView 和 addFooterView 详解

addHeaderView()方法&#xff1a;主要是向listView的头部添加布局addFooterView()方法&#xff1a;主要是向listView的底部添加布局 需要注意的是添加布局的时候应该添加从父容器开始添加&#xff0c;而不能直接添加父容器中的子控件。例如&#xff1a;从一个xml布局文件中添加…

python教程--__init_.py的作用

__init__.py 的作用 python的每个模块的包中&#xff0c;都有一个__init__.py文件&#xff0c;有了这个文件&#xff0c;我们才能导入这个目录下的module。那么&#xff0c;__init__.py还有什么别的功能呢&#xff1f;其实&#xff0c;__init__.py里面还是可以有内容的&#xf…

在HTML中怎么去掉超链接的下划线?

<style type"text/css">a {text-decoration: none}</style> https://zhidao.baidu.com/question/253614370.html