原题如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连.
我看了回贴都没有很好解决,主要是没有排除重复。
解决思路:强化题目,用1、2、2、3、4、5这六个数字排列“递增”序列。其他要求不变。
算法思路:显然是递归,初始序列122345,先从末两位(45)变化(45,54),然后末三位(345) ... 直到最后六位.怎样解决重复问题?很简单,由于是递增序列,每生成新序列可与前一生成序列比较,如<放弃当前序列。当然有更好效率,如预先预测。代码如下:
class test
{
// 当前固定部分
private String CurFixPart;
private String PreGenNum;
public static void main(String[] args)
{
test t=new test();
t.GenControll("122345");
}
// 调整字符串s位置pos字符到最前
private String shift(String s, int pos)
{
String newStr;
if (s.length()>pos+1)
newStr=s.substring(pos, pos+1)+s.substring(0, pos)+s.substring(pos+1);
else
newStr=s.substring(pos)+s.substring(0, pos);
return newStr;
}
protected int Validate(String newNum)
{
String newGenNum=CurFixPart+newNum;
if (Integer.valueOf(newGenNum)<=Integer.valueOf(PreGenNum))
return 0;
if (newGenNum.substring(2,3).equals("4") ||
(newGenNum.indexOf("35")!=-1) || (newGenNum.indexOf("53")!=-1))
return 0;
PreGenNum=newGenNum;
System.out.println(newGenNum);
return 0;
}
public void GenControll(String Base)
{
PreGenNum="0";
CurFixPart="";
GenNext(Base, 0);
}
void GenNext(String varPart, int curPos)
{
if (varPart.length()==2)
{
Validate(varPart);
Validate(shift(varPart, 1));
return;
}
// Next Layer
String newGen=shift(varPart, curPos);
String SavedFixPart=CurFixPart;
CurFixPart=CurFixPart+newGen.substring(0,1);
GenNext(newGen.substring(1), 0);
CurFixPart=SavedFixPart;
// 同层递增
if (curPos==varPart.length()-1)
return;
GenNext(varPart, curPos+1);
}
}
序列122345测试通过。
分享到:
相关推荐
Java笔试题.docx Java重点面试题 – 针对java面试过程中经常遇到的一些试题进行总结.docx JAVA面试基础知识点总结.docx Java面试笔记.docx 写出正则表达式,从一个字符串中提取链接地址.docx 出现几率最高和覆盖范围...
JAVA笔试面试资料 NET面试题笔试题 web开发 中兴资料 微软笔试面试 数据库面试题笔试题 百度笔试面试 算法 数据结构 网易搜狐新浪笔试面试 腾讯笔试面试 计算机基础 计算机网络 软件测试 阿里巴巴笔试面试
中兴笔试题 包括java笔试题,C++笔试题 ,软件工程笔试题等等
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间...学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。
2015创新工场校招研发笔试题.pdf 2015小米校招技术类笔试题.pdf 2015届阿里巴巴校招测试开发工程师在线笔试题.pdf 2015年欢聚时代校园招聘C++笔试题目.pdf ... 浙江大华2015届校园招聘算法、软件类笔试题.pdf
Java笔试题目汇总.pdf Java面试宝典_2010.doc 面试全攻略100题.doc 智力题和答案.doc C语言面试题大汇总.doc 计算机专业必备笔试面试锦囊.doc 笔试.rar 面试题集合.zip C语言面试题大汇总1.doc 面试题集合 java面试...
华勤java笔试题 最近需要从文本中抽取结构化信息,用到了很多github上的包,遂整理了一下,后续会不断更新。 很多包非常有趣,值得收藏,满足大家的收集癖! 如果觉得有用,请分享并star,谢谢! 涉及内容包括:中...
2018秋招java笔试题 Java Review 1. 数据结构和算法 红黑树 代码: ) 图解: 2. 面试题 2021.4.10 英礡Improbable笔试题 (2021 Improbable Intern Online Test) 括号匹配 约瑟夫环 2021.03.31 华为校园招聘软件笔试题...
│ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海...
初级java笔试题编程面试大学 我最初创建它是为了成为一名软件工程师的学习主题的简短待办事项列表,但它增长到您今天看到的大列表。 完成这个学习计划后,! 你可能不需要像我一样学习。 总之,你需要的都在这里。 ...
字节跳动java笔算法试题 程序员应该访问的最佳网站 一些对程序员有用的网站。 在学习 CS 时,您必须了解一些有用的网站,以便随时了解最新信息,以便更好地掌握技术并学习新事物。 这是您应该访问的一些网站的非详尽...
java笔试题算法印尼OSS项目列表 想做出贡献吗? 寻找灵感来源? 想在社区中合作吗? 查看以下列表。 注意:你想把你的 OSS 项目放到这里吗? 请发送 PR(拉取请求)。 请保持字母顺序。 公司OSS项目 以下是由公司...
亚信java笔试题 JobInterviewInAction this is the collection of my codes for job interview 面试的公司 寒武纪:一面挂,(岗位不匹配,自己一个做软件的,问我计算机组成原理,高性能计算,我当时心都凉了) ...
java笔试题算法基于朴素贝叶斯的文本分类 方法 开发环境 我们的项目将使用Java编写,使用lucene进行文本分析,使用log4j记录统计信息,以便我们可以专注于不同文本分类算法的实现。 这个软件是如何工作的? 我们的...
字节跳动java笔算法试题 初创企业 程序员应该访问的最佳网站 一些对程序员有用的网站。 在学习 CS 时,您必须了解一些有用的网站,以便随时了解最新信息,以便更好地掌握技术并学习新事物。 这是您应该访问的一些...
软件大数据面试笔试复习资料面试技巧HR面试常问的问题总结面试笔试题整理资料合集: 01大数据面试复习----Java基础---集合类、多线程、JVM 02大数据面试复习----画重点----常问问题分析 03大数据面试复习----画重点--...
│ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海...
│ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海...
海量面试题,含答案,带答案, 华为,百度,新浪,阿里巴巴,微软,microsoft,IBM,腾讯,中软,Google,网易,神州数码,新蛋,思科,Cisco 淘宝,奇虎,中国移动,东软,...面试题,笔试题,Java,设计模式,算法,前端