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);
}
}
}
Excel是最常用的办公软件。每个单元格都有唯一的地址表示。 比如:第4列表示为:“D”,第255列表示为“IU”。 事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。
最新推荐文章于 2022-01-08 22:55:43 发布