Excel是最常用的办公软件。每个单元格都有唯一的地址表示。 比如:第4列表示为:“D”,第255列表示为“IU”。 事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。

8 篇文章 0 订阅
package Java2012大赛;
/*
Excel是最常用的办公软件。每个单元格都有唯一的地址表示。
  比如:第4列表示为:“D”,第255列表示为“IU”。
  事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。 
  你的任务是:编写程序,实现常规地址格式到字母地址格式到的转换。
  例如:1-a,2-b;26-z;27-aa,52-az;53-ba;702-zz,703-aaa
*/
/*实现了n个数在m(n>=m)个位置上的全排列
 * */
public class Excel用全排列实现 {
	static int i;// 要排列的个数
	static int j;// 在几个位置排列
	static int num = j;// 一个定值
	static int[] array;// 存储一个排列
	static int count = 0;// 记录全排列的个数

	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		int i = 26;
		int j = 1;
		num = j;
		array = new int[num];
		// int x=16384;//xfd
	//	int x=18279;//aaaa
		int x = Integer.parseInt(javax.swing.JOptionPane.showInputDialog("input a int number:"));
		fx(i, j, num, x);
		while (count < x) {
			j++;
			
			array = new int[j];
			fx(i, j, j, x);
		}
		long end = System.currentTimeMillis();
		//System.out.println(end - start);
	}

	private static void fx(int i, int j, int num, int x) {
		if (j == 1) {// 如果j==1
			for (int a = 1; a <= i; a++) {
				count++;
				if (count < x)
					continue;
				array[num - 1] = a;
				if (count == x) {
					char ch[] = new char[array.length];
					for (int b = 0; b < array.length; b++) {
						ch[b] = (char) (array[b] + 96);
					}
					System.out.println(ch);
				}
				break;
			}
			return;
		}
		j--;
		for (int a = 1; a <= i; a++) {
			array[num - j - 1] = a;
			fx(i, j, num, x);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值