求所有4(5,6...)字母的组合,求高手赐教.高分

dd121011 2015-06-02 10:01:29
求用程序写出所有任意长度的组合.
比如
26个英文字母,所有四字母的组合
aaaa
abcd
abce
.....
wxyz
zzzz
...全文
151 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
飏飏一蝶 2015-06-03
  • 打赏
  • 举报
回复
0-25 分别代表a-z 上面的26改为25,不是从1开始计数的...
飏飏一蝶 2015-06-03
  • 打赏
  • 举报
回复
我的思路很简单,有一组依次排列的字母,需要从中选N个 那么只需要N个数记录自己的选择, 那么问题转换为求下标,下标数组满足2个条件: 1、每个下标最大不超过26 2、下标数组中,前面的下标必须比后面的小(因为不是全排列而是有序字典排列) 程序只打印了下标,没打印对应的字母 当N>6的时候排列数量是很恐怖的,你自己体会~ num为N,你可以自己改,只提供一个思路~

public class Com {
	static char[] characters = {'a','b','c','d','e','f','g','h','i',
			              'j','k','l','m','n','o','p','q','r',
		                   	's','t','u','v','w','x','y','z'};
	static int num = 5;
	static int count = 0;
	//脚标数组
	static int[] a = new int[num];
	public static void increaseByOne(){
		a[num-1]++;
		count++;
		for (int i = a.length - 1 ; i > 0 ; i--) {
			if(a[i]>26) 
			{
				a[i-1]++;
				a[i] = 0;
			}
		}
		setArray();
	}
	
	public static void setArray(){
		for (int i = 1; i < a.length; i++) {
			for (int j =0 ; j < i; j++) {
				if (a[j] > a[i]) {
						a[i] = a[j];
					}
				}
			}
		}
	
	public static void printA()
	{
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i]+",");
		}
		System.out.println();
		
	}
	public static void main(String[] args) {
		printA();
		while(a[0] <= 26)
		{
		   increaseByOne();
		   printA();
		}
		System.out.println("一共"+(count+1)+"组合");
	}
}
dd121011 2015-06-03
  • 打赏
  • 举报
回复
谢谢楼上.....值得借鉴

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧