| 首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载 | ||
| 2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试 MPA考试 | 中科院 |
||
| 四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT 新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语 |
||
| 计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证 华为认证 | Java认证 |
||
| 公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格 报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师 人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平 驾驶员 | 网络编辑 |
||
| 卫生资格 | 执业医师 | 执业药师 | 执业护士 | ||
| 会计从业资格考试(会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师 注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师 |
||
| 一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师 质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师 设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师 城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师 |
||
| 缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏 | ||
题目:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
不是特别难的题目,暴力算和用图论算(深度遍历)都可以,结果是198.图论的话就是构造无向图,然后深度优先递归。
package com.graphic;
import java.util.Iterator;
import java.util.TreeSet;
public class CharSequence {
private String[] c = {"1","2","2","3","4","5"};
private int n = c.length;
private boolean[] visited = new boolean[n];
private int[][] g = new int[n][n];
private TreeSet<String> ts = new TreeSet<String>();
private String result = "";
public CharSequence(){
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(I == j) g[i][j] = 0;
else g[i][j] = 1;
}
}
g = 0;
g = 0;
}
public void depthFirst(int index){
visited[index] = true;
result += c[index];
if(result.length() == n){
ts.add(result);
result = result.substring(0,result.length()-1);
visited[index] = false;
}
else{
for(int i=0; i<n; i++){
if(!visited[i] && g[index][i] == 1){
depthFirst(i);
}else continue;
}
result = result.substring(0,result.length()-1);
visited[index] = false;
}
}
public void graphicGet(){
for(int i=0; i<c.length; i++){
depthFirst(i);
}
int count = 0;
System.out.print("图论的结果:");
Iterator<String> it = ts.iterator();
while(it.hasNext()){
String tmp = it.next();
if(tmp.contains("35")) continue;
if(tmp.contains("53")) continue;
if(tmp.charAt(3) == ‘4‘) continue;
System.out.println(tmp);
count++;
}
System.out.println("共计:"+count+"个");
}
public void bruteForce(){
System.out.println("暴力搜的结果:");
int count = 0;
for(int I = 122345; i<543222; i++){
String tmp = ""+I;
if(tmp.charAt(3) == ‘4‘) continue;
if(tmp.contains("35")) continue;
if(tmp.contains("53")) continue;
if(tmp.contains("5") && tmp.contains("4") && tmp.contains("3") && tmp.contains("1"))
{
int index = tmp.indexOf("2");
if(index == -1) continue;
if(index == tmp.length()-1) continue;
if(tmp.substring(index+1).contains("2")){
System.out.println(tmp);
count++;
}
}
}
System.out.print("共计:"+count+"个");
}
public void recrusive(){
}
public static void main(String[] args) {
CharSequence cs = new CharSequence();
//图论的方法
cs.graphicGet();
//暴力搜索
cs.bruteForce();
}
}