黑马程序员技术交流社区
标题:
算发
[打印本页]
作者:
zbgl
时间:
2013-11-18 23:47
标题:
算发
要求用java语言编写程序,输出数字1,2,2,3,4,5的所有可能的排列组合,而且4不能在第三位,3和5不能相邻,例如122345是正确的,12435是错误的。哪位大神给点提醒?算法题真麻烦
作者:
陈文杰
时间:
2013-11-19 00:02
package testWork;
public class Test1
{
private int[] numbers = new int[] {1, 2, 3, 3, 4, 5};
public int n;
private String lastResult = "";
private boolean validate(String s)
{
if (s.compareTo(lastResult) <= 0) //按字典顺序比较两个字符串。
{
return false;
}
if (s.charAt(2) == '4')//"4"不能在第三位
{
return false;
}
if (s.indexOf("35") >= 0 || s.indexOf("53") >= 0)//"3"与"5"不能相连
{
return false;
}
return true;
}
public void list(String index, String result)
{
for (int i = 0; i < numbers.length; i++)
{
if (index.indexOf(i+48) < 0)
{
String s = 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)
{
Test1 t = new Test1();
t.list("", "");
System.out.println("总数:" + t.n);
}
}
复制代码
作者:
黄炳期
时间:
2013-11-19 12:14
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2