Java中的字符串排列(非递归)
我是一名10年级的高中生,正在努力解决Java数据结构和算法书中的一些问题 其中一个问题是打印字符串的所有排列Java中的字符串排列(非递归),java,string,permutation,Java,String,Permutation,我是一名10年级的高中生,正在努力解决Java数据结构和算法书中的一些问题 其中一个问题是打印字符串的所有排列 class C14 { public static void main(char a[]) { // char[] a = {'c','a','r','b','o','n'}; int c=0,w=0; for(int q = 0;q<a.length;q++) { for(int i=0;i<a.length;i++)
class C14
{
public static void main(char a[])
{
// char[] a = {'c','a','r','b','o','n'};
int c=0,w=0;
for(int q = 0;q<a.length;q++)
{
for(int i=0;i<a.length;i++)
{
for(int j=1;j<a.length;j++)
{
for(int k=1;k<a.length-1;k++)
{
for(int z=0;z<a.length;z++)
{
System.out.print(a[z]);
c++;
}
w++;
System.out.println();
char p=a[k+1];
a[k+1]=a[k];
a[k]=p;
}
System.out.println();
}
System.out.println();
char x=a[0];
a[0]=a[1];
a[1]=x;
}
}
System.out.println(" Character count = " + c);
System.out.println(" Word count = " + w);
}
}
C14类
{
公共静态void main(字符a[]
{
//char[]a={'c','a','r','b','o','n'};
int c=0,w=0;
对于(int q=0;q重复排列)
当你有n件东西可供选择时…你每次都有n件选择
选择其中的r时,排列为:
n×n×…(r次)=n^r
我将介绍两种情况。第一种情况是当我们已经知道n和r的大小时,这很简单。第二种情况是当n和r是动态的
//when n and r are known statically
class Permutation
{
public static void main(String[] args)
{
char[] values = {'a', 'b', 'c', 'd'};
int n = values.length;
int r = 2;
int i = 0, j = 0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
System.out.println(values[j] + " " + values[i]);
}
}
}
}
//when n and r are known only dynamically
class Permutation
{
public static void main(String[] args)
{
char[] values = {'a', 'b', 'c', 'd'};
int n = values.length;
int r = 2;
int i[] = new int[r];
int rc = 0;
for(int j=0; j<Math.pow(n,r); j++)
{
rc=0;
while(rc<r)
{
System.out.print(values[i[rc]] + " ");
rc++;
}
System.out.println();
rc = 0;
while(rc<r)
{
if(i[rc]<n-1)
{
i[rc]++;
break;
}
else
{
i[rc]=0;
}
rc++;
}
}
}
}
//当n和r静态已知时
类置换
{
公共静态void main(字符串[]args)
{
char[]值={'a','b','c','d'};
int n=值。长度;
int r=2;
int i=0,j=0;
对于(i=0;我对此有何看法-?感谢您的回复。非常感谢。但问题是,我不认为我可以使用StringBuilder和子字符串函数等(不允许)您希望在数组“a”上进行排列,而不必在每次“a”的大小更改时更改循环?