/**
* 给定一整数n(1<n<9) 求1-n的全排列 用穷举法 效率不是很好!
*
*/
public void testhh(){
while(true){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
if(n == 3){
ff3(n);
}else if(n == 4){
ff4(n);
}else if(n == 2){
ff2(n);
}else if(n == 5){
ff5(5);
}else if(n == 6){
ff6(6);
}else if(n == 7){
ff7(n);
}else if(n == 8){
ff8(n);
}else {
System.out.print("您输入的数不在(1<n<9)内,请重新输入:");
}
}
}
public void ff2(int n) {
for(int i = 1;i<=n;i++)
for(int k = 1;k<=n;k++)
{
if(i==k)
continue;
else
System.out.println(i*10+k);
}
}
public void ff3(int n) {
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
for(int k = 1;k<=n;k++)
{
if(i==j || i==k || j==k)
continue;
else
System.out.println(i*100+j*10+k);
}
}
public void ff4(int n) {
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
for(int a = 1;a<=n;a++)
for(int k = 1;k<=n;k++)
{
if(i==j || i==k || j==k || a==j || a==k || a==i)
continue;
else
System.out.println(i*1000+j*100+k*10+a);
}
}
public void ff5(int n) {
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
for(int a = 1;a<=n;a++)
for(int b = 1;b<=n;b++)
for(int k = 1;k<=n;k++)
{
if(i==j || i==k || j==k || a==j || a==k || a==i || b==i || b==j || b==k || b==a)
continue;
else
System.out.println(b*10000+i*1000+j*100+k*10+a);
}
}
public void ff6(int n) {
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
for(int a = 1;a<=n;a++)
for(int b = 1;b<=n;b++)
for(int c = 1;c<=n;c++)
for(int k = 1;k<=n;k++)
{
if(i==j || i==k || j==k || a==j || a==k || a==i || b==i || b==j || b==k || b==a || c==i || c==j
|| c==k || c==a || c==b)
continue;
else
System.out.println(c*100000+b*10000+i*1000+j*100+k*10+a);
}
}
public void ff7(int n) {
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
for(int a = 1;a<=n;a++)
for(int b = 1;b<=n;b++)
for(int c = 1;c<=n;c++)
for(int d = 1;d<=n;d++)
for(int k = 1;k<=n;k++)
{
if(i==j || i==k || j==k || a==j || a==k || a==i || b==i || b==j || b==k || b==a || c==i || c==j
|| c==k || c==a || c==b || d==i || d==j || d==k || d==a || d==b || c==d )
continue;
else
System.out.println(d*1000000+c*100000+b*10000+i*1000+j*100+k*10+a);
}
}
public void ff8(int n) {
for(int i = 1;i<=n;i++)
for(int j = 1;j<=n;j++)
for(int a = 1;a<=n;a++)
for(int b = 1;b<=n;b++)
for(int c = 1;c<=n;c++)
for(int d = 1;d<=n;d++)
for(int e = 1;e<=n;e++)
for(int k = 1;k<=n;k++)
{
if(i==j || i==k || j==k || a==j || a==k || a==i || b==i || b==j || b==k || b==a || c==i || c==j
|| c==k || c==a || c==b || d==i || d==j || d==k || d==a || d==b || c==d || e==i || e==j
|| e==k || e==a || e==b || e==c || e==d)
continue;
else
System.out.println(e*10000000+d*1000000+c*100000+b*10000+i*1000+j*100+k*10+a);
}
}
给定一整数n(1<n<9) 求1-n的全排列 用穷举法 效率不是很好!
最新推荐文章于 2021-08-16 17:53:55 发布