- 浏览: 170114 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (193)
- Axis2 (10)
- Andriod (2)
- Java (22)
- Eclipse (2)
- 程序人生 (3)
- Windows (1)
- Sql Server 2005/2008 (7)
- 健身 (2)
- Log4j (1)
- Ant (1)
- Fatjar (2)
- 国际化 (1)
- Linux (3)
- JDBC (1)
- Oracle (2)
- 各种报错 (4)
- SWT (5)
- Tomcat (2)
- 车辆管理 (1)
- SVN (2)
- Spring (5)
- 域名服务器 (0)
- HaoWaYa (1)
- FTP (1)
- 集散中心 (1)
- 专业知识 (1)
- 面试准备 (19)
- 设计模式 (22)
- Junit (1)
- 软件下载 (3)
- 深入理解Java虚拟机 (3)
- 数据结构 (4)
- 雅思 托福 (0)
- UML (1)
- Maven (1)
- CV (1)
- ServiceMix (1)
- 电子书 (5)
- Struts1/2 (4)
- DOM W3C DHTML (3)
- Jawr (1)
- LoadRunner (1)
- Java反编译 (0)
- 英语学习 (0)
- 技术书籍 (1)
- Cygwin (0)
- ibatis (1)
- 数据库 (1)
- jQuery (0)
- s (2)
- 源代码项目 (5)
- JSRs (0)
- JCP (0)
- XML (2)
- Dojo (3)
- Effective Java (1)
- 一站到底 (3)
- JavaScript (6)
- DB2 (1)
- 刷机 (1)
- 字符 (1)
- Dynamic Web Project (1)
- 股市日记 (1)
- 代码片段 (0)
- CSS (1)
- PDF (0)
- 英语口语 (1)
- 乒乓球 (1)
- 体检 (0)
- 送花 (0)
- 面试准备-再战江湖 (5)
- ddq (0)
- sss (0)
- ssssss (0)
- 2020面试 (0)
最新评论
-
samsongbest:
Copperfield 写道你的目标很远大,佩服~惭愧,都忘了 ...
人生目标 -
Copperfield:
你的目标很远大,佩服~
人生目标
原题如下:用1、2、2、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
解题思路:
很明显,这是一个递归算法。我们可以排列将这6个数按从小到大的顺序排一下,如果是1,2,3,4,5,6,那么会有1*2*3*4*5*6= 6!=720个递增的数。但如果是1,2,2,3,4,5,那么在这720个数中一定会有相同的数对出现(由于在这6个数中只有两个数两同,也就是说,如果有重复的数,那么一定是一对数,如122345会出现两次)。
排列的基本规则是分步进行。也就是说,要排列上面6个数,首先应该选择第一个数,这第一个数可以选择这6个数中的任意一个,如选择1.第二步是选择第二个数,这第二个数不能再选择已经选过的数,如1.因此,它只能从后面5个数中选择。如选择2。以此类推。
我们也可以在程序中模拟这一过程。源程序如下:
{
private int []numbers = new int []
{ 1 , 2 , 3 , 3 , 4 , 5 };
public int n;
private StringlastResult = "" ;
private boolean validate(Strings)
{
if (s.compareTo(lastResult) <= 0 )
return false ;
if (s.charAt( 2 ) == ' 4 ' )
return false ;
if (s.indexOf( " 35 " ) >= 0 || s.indexOf( " 53 " ) >= 0 )
return false ;
return true ;
}
public void list(Stringindex,Stringresult)
{
for ( int i = 0 ;i < numbers.length;i ++ )
{
if (index.indexOf(i + 48 ) < 0 )
{
Strings = result + String.valueOf(numbers[i]);
if (s.length() == numbers.length)
{
if (validate(s))
{
System.out.println(s);
lastResult = s;
n ++ ;
}
break ;
}
list(index + String.valueOf(i),s);
}
}
}
public static void main(String[]args)
{
test1t = new test1();
t.list( "" , "" );
System.out.println( " 总数: " + t.n);
}
}
其中list函数是这个算法的核心函数。index参数表示已经选择过的数,用numbers数组的索引表示。如index="012",表示numbers的前三个数已经被选择,也表示应该选择第四个数了,而这第四个数应该从后三个数中选择。result参数表示临时的数字组合(这个数字组合最多是5个数字,因为,如果到了6个数字,就表示已经有一个结果产生了)。在默认情况下index和result的值都是""。
在validate中使用了 if (s.compareTo(lastResult) <= 0)进行判断,由于按这种方法进行排列,如果这6个数是递增给出的,那么排列的结果一定是递增的,但上述的6个数其中第2和第3个位置上都是2,因此,如果出现了上一个结果不小于当前结果的情况,一定是有重复了,因此,要将这部分数过滤出去。
使用1, 2, 2, 3, 4, 5的测试结果
122345
122543
123245
123254
123425
123452
125234
125243
125423
125432
132245
132254
132425
132452
132524
132542
142325
142523
143225
143252
145223
145232
152234
152243
152324
152342
152423
152432
212345
212543
213245
213254
213425
213452
215234
215243
215423
215432
221345
221543
223145
223154
223415
223451
225134
225143
225413
225431
231245
231254
231425
231452
231524
231542
232145
232154
232415
232451
232514
232541
241325
241523
242315
242513
243125
243152
243215
243251
245123
245132
245213
245231
251234
251243
251324
251342
251423
251432
252134
252143
252314
252341
252413
252431
312245
312254
312425
312452
312524
312542
315224
315242
315422
321245
321254
321425
321452
321524
321542
322145
322154
322415
322451
322514
322541
325124
325142
325214
325241
325412
325421
341225
341252
341522
342125
342152
342215
342251
342512
342521
345122
345212
345221
412325
412523
413225
413252
415223
415232
421325
421523
422315
422513
423125
423152
423215
423251
425123
425132
425213
425231
431225
431252
431522
432125
432152
432215
432251
432512
432521
451223
451232
451322
452123
452132
452213
452231
452312
452321
512234
512243
512324
512342
512423
512432
513224
513242
513422
521234
521243
521324
521342
521423
521432
522134
522143
522314
522341
522413
522431
523124
523142
523214
523241
523412
523421
541223
541232
541322
542123
542132
542213
542231
542312
542321
543122
543212
543221
总数:198
使用1,2, 3, 3, 4, 5的测试结果
123345
125433
132345
132543
133245
133254
133425
133452
143325
145233
152334
152343
152433
213345
215433
231345
231543
233145
233154
233415
233451
243315
245133
251334
251343
251433
312345
312543
313245
313254
313425
313452
315234
315243
315423
315432
321345
321543
323145
323154
323415
323451
325134
325143
325413
325431
331245
331254
331425
331452
331524
331542
332145
332154
332415
332451
332514
332541
341325
341523
342315
342513
343125
343152
343215
343251
345123
345132
345213
345231
413325
415233
423315
425133
431325
431523
432315
432513
433125
433152
433215
433251
451233
451323
451332
452133
452313
452331
512334
512343
512433
513234
513243
513324
513342
513423
513432
521334
521343
521433
523134
523143
523314
523341
523413
523431
541233
541323
541332
542133
542313
542331
543123
543132
543213
543231
543312
543321
总数:118
使用1, 3, 3, 3, 4, 5的测试结果
133345
313345
315433
331345
331543
333145
333154
333415
333451
343315
345133
433315
451333
513334
513343
513433
541333
543133
543313
543331
总数:20
原文:
http://www.blogjava.net/nokiaguy/archive/2008/05/10/199647.html
发表评论
-
how tomcat works
2016-09-11 14:18 585how tomcat works, chinese and e ... -
【Core Java】 The Java I/O System
2014-09-09 16:32 402I/O 1. 最common的用法,从一个文件按行 ... -
用java编写简单Webserver,理解webserver的功能。
2014-01-08 11:06 909from http://www.cnblogs.com/wa ... -
课前练习
2013-12-27 17:47 0设计模式 课前李艾尼西 -
Java的规范制定
2012-08-14 15:49 7261. JCP: Java Community Process ... -
ResourceBundle
2012-08-03 13:23 7681. getBoundle //resources文件夹下的 ... -
Java Source Learning
2012-07-26 17:49 749Java Source Learning 2012-7-26 ... -
Java的位运算符&|^
2012-07-26 11:24 7441. & 与,同时满足 1&1 = 000 ... -
volatile
2012-07-26 11:02 614不稳定的,所以不同线程都要到共享内存中读取,不同线程看 ... -
change package and import
2012-07-25 17:58 758package util; import java.io.B ... -
transient
2012-07-13 23:57 968如果用transient声明一个实例变量,当对象存储时,它的 ... -
Java数据类型的长度
2012-07-13 23:55 705float4个字节 double8个字节 -
java 集合类图形解释
2012-04-30 20:30 802转自: http://messon619.iteye.com/ ... -
Java网络编程
2012-04-27 23:54 689http://www.cnblogs.com/springcs ... -
vvvvvvvvvvvvvvvvvvvvvvvvv
2012-04-24 13:33 5839Java Concurrency In Practice ... -
Java并发/多线程
2012-04-10 17:03 848Java多线程 实现线程的两种方法: a. 继承Threa ... -
深入研究java.lang.ThreadLocal类
2012-03-08 15:22 356深入研究java.lang.ThreadLocal类 ... -
Java中Split函数的用法技巧
2012-02-09 13:29 951<!-- [if gte mso 9]><x ... -
SimpleDataFormat 日期格式
2011-12-21 16:44 813Letter Date or Ti ... -
Thread stop不能用了
2011-12-19 17:39 3816http://docs.oracle.com/javase/6 ...
相关推荐
java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB“ 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张...
【标题】"农行Java笔试题"涉及到的Java知识点涵盖了编程基础、面向对象特性、集合框架、多线程、异常处理、IO流、网络编程、数据库操作等多个领域,这些都是Java程序员必须掌握的核心技能。 首先,从编程基础角度来...
Java笔试是评估程序员技术能力的重要环节,特别是在求职或者晋升的过程中,常常会遇到此类考核。这份“JAVA笔试常见试题”集合了历届二级Java笔试的题目,涵盖了基础语法、面向对象编程、集合框架、多线程、异常处理...
西安的软件行业对Java开发人员的需求旺盛,许多公司在招聘过程中会设置Java笔试环节来测试候选人的技术实力。这些笔试题目通常涵盖了Java编程的基础知识、核心概念以及进阶应用,旨在全面评估应聘者的编程能力、问题...
Java 笔试试题变态版知识点总结 Java 笔试试题变态版是 Java 开发者面试的常见题目,涵盖了 Java 基础知识、垃圾收集器、字符串、Math 函数、线程、数组、多态性、Set 集合等方面。 一、垃圾收集器(GC) 垃圾...
java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 ...
【Java笔试题解析】 在2020年兴业银行的Java笔试中,涉及了多个核心的Java编程和技术概念。以下是对部分题目进行的详细解答: 1. 输入一个正整数,计算并输出距离它最近的对称数 对称数是指从左向右读和从右向左...
本资料集合了大量Java笔试题,旨在帮助求职者全面复习并准备Java相关的笔试环节,同时包含了各大公司的经典试题,以期提供更丰富的实践应用场景。 1. **基础语法**:这部分主要考察对Java基本语法的理解,如变量...
上海交通银行的JAVA笔试编程题主要考察应聘者的Java编程基础以及在实际问题中的应用能力。这类题目通常涵盖多个方面,包括但不限于数据类型转换、字符串处理、字符编码与解码等核心概念。以下是对这些知识点的详细...
根据给定文件的信息,我们可以总结出以下几个重要的Java知识点: ...这些知识点涵盖了Java的基础概念、面向对象编程特性、异常处理、Servlet编程以及JSP技术等方面,对于准备Java笔试的人来说是非常重要的复习材料。
Java笔试题是评估应聘者Java编程能力的重要环节,通常包括单选题、多选题、判断题和简答题。这些题目覆盖了Java语言的核心概念、类库、编程规范以及问题解决能力。以下是一些可能出现在Java笔试题中的关键知识点: ...
Java笔试题集合是Java开发者在求职过程中经常遇到的一类测试,涵盖了从基础语法到高级特性的广泛知识领域。以下是一些常见的Java笔试题及其相关的知识点: 1. **基础语法** - **数据类型**:Java有八种基本数据...
Java笔试宝典是Java开发者在面试前的重要参考资料,它涵盖了大量关于Java编程语言的核心概念、设计模式、数据结构、算法以及框架等相关知识点。这个PDF文件名为"JAVA 面试题汇总.pdf",很可能是对这些关键领域的问题...
10. **算法**:虽然Java笔试题可能不会深入到复杂的算法题目,但基础的数据结构(如栈、队列、链表、树、图)和基本算法(如排序、搜索)的理解对于解决问题至关重要。 通过学习和掌握以上知识点,并结合实际的笔试...
【标题】:“各公司java笔试题”所涵盖的Java编程知识点详解 【描述】:这份资源集合了2012年和2013年北京、上海等地一些知名IT公司的Java笔试题目,其中包括用友公司和亿阳信通等企业的考题。这些题目无疑是Java...
java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx ...
Java笔试题涵盖了许多核心概念,这里我们逐一详细讨论: 1. 面向对象的特征: - 抽象:抽象是将复杂的问题简化,关注关键特性,忽略无关细节。在Java中,抽象主要体现在抽象类和接口。 - 继承:继承允许创建新类...
【吉利汽车Java笔试面试题】是一份专门为应聘者准备的面试资源,主要涵盖了Java编程语言在实际面试中的常见问题和知识点。这份资料旨在帮助求职者更好地理解和掌握Java核心技术,提高他们在吉利汽车公司或其他IT企业...
网龙最新秋招Java笔试题 本文档是对网龙最新秋招Java笔试题的知识点总结。通过对试题的分析,我们可以总结出以下知识点: 1. 计算机网络基础知识: * PING 命令的实现机制:PING 命令发出的是 ICMP 请求报文,而...
Java笔试题汇总 Java是最流行的编程语言之一,在软件开发行业中非常常用。以下是Java笔试题汇总,涵盖了Java的多个方面,包括Java基础、Java面向对象编程、Java多线程、Java网络编程、Java数据库编程等。 Java...