黑马程序员技术交流社区
标题:
排列组合用代码实现
[打印本页]
作者:
cqdouble
时间:
2014-5-26 22:17
标题:
排列组合用代码实现
就是假如有3个数为1,2, 3,要得到的组合为1,2,3,12,13,23,21,31,32,123,132,213,231,312,321
作者:
成小龙
时间:
2014-5-26 22:43
这个 题做过 把字符换数字 import java.util.*;
作者:
成小龙
时间:
2014-5-26 22:44
public class Text5
{
public static void main(String args[])
{
String s="123"; //声明一个字符串
mySorts(s); //调用方法
}
private static void mySorts(String s) //封装一个mySorts方法
{
ArrayList<String> list =new ArrayList<String>(); //创建一个数组ArrayList集合
char[] ch = s.toCharArray(); //把字符串变为字符数组
for(char c:ch) //用for的高级方法把字符装进集合中
list.add(c+"");
int len=s.length(); //声明一个变量为字符串的长度
int start=0; //声明一个零变量
for(int l=2;l<=s.length();l++) //决定字符串的长度的循环
{
for(int x=0;x<len;start++,x++) //在字符串的后面加一个字符的循环
{
for(int i=0;i<s.length();i++)
list.add(list.get(start)+list.get(i)); //把末尾加一个字符的字符串装入集合中
}
len=len*s.length(); //把多一位字符所能产生的字符串个数赋给原个数
}
sort(list); //调用方法
}
public static void sort(ArrayList<String> list) //封装方法
{
a:for(int i = 0;i<list.size();i++)
{
String str= new String(list.get(i)); //把集合内的字符一个一个的循环出来变成字符串
for(int j = 0;j < str.length();j++)
{
if(str.lastIndexOf(str.substring(j,j+1))!=str.indexOf(str.substring(j,j+1))) //循环判断每一个字符在字符中第一次出现的位置是否等于最后出现的位置
continue a; //如果不相等说明有重复字符,返回下一个字符串继续循环
}
System.out.println(str) ; //打出不重复的字符串
}
}
}
作者:
木华
时间:
2014-5-26 23:33
代码如下:
class Test8
{
public static void main(String[] args)
{
char[] ch = "123".toCharArray();
int i,j,k;
for(int m=1; m<=ch.length;m++)
{
if(m==1)
{
for(i=0;i<ch.length;i++)
{
System.out.println(ch[i]);
}
}
if(m==2)
{
for(i=0;i<ch.length;i++)
{
for(j=0;j<ch.length;j++)
{
if(i==j) continue;
System.out.println(ch[i]+""+ch[j]);
}
}
}
if(m==3)
{
for(i=0;i<ch.length;i++)
{
for(j=0;j<ch.length;j++)
{
for(k=0;k<ch.length;k++)
{
if (i==j) continue;
if(i==k) continue;
if(j==k) continue;
System.out.println(ch[i]+""+ch[j]+""+ch[k]);
}
}
}
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2