java之不重复的三位数
问题描述:
* 0-9这10个数字可以组成多少不重复的3位数?
如图所示:
/**
*
*/
package javaLearn;
/**
* @author Administrator
*qq:1012885458
*/
public class 不重复的三位数 {
/*
* */
public static void main(String args[]) {
long start= System.currentTimeMillis();
int count=0;
//穷举法
for(int i=1;i<=9;i++) {
//9
//第一位数
for(int j=0;j<=9;j++) {
//10
if(i==j) continue;
for(int p=0;p<=9;p++) {
//10
if(j==p || i==p) continue;
int s=i*100+j*10+p;
// System.out.println(s);
count++;
}
}
}
System.out.printf("有%d多次不重复的三位数 \n",count);
long end= System.currentTimeMillis();
System.out.println("运行的时间为:"+(end-start));
}
}
如图所示:
/**
*
*/
package javaLearn;
/**
* @author Administrator
*qq:1012885458
*/
public class 不重复的三位数2 {
public static void main(String[]args) {
long start= System.currentTimeMillis();
int i ,a,b,c;
int count=0;//计数器
for(i=100;i<=999;i++) {
//所有的3位数循环一遍//a代表百位上的数字//b代表十位上的数字//c代表个位上的数字
a=i/100;
b=i/10%10;
c=i%10;
if(a!=b&&a!=c&&b!=c) {
// System.out.print(i+"");//输出数字,后面加空格
count++;//每10个数字换行
if(count%10==0)
System.out.print("\n");
}
System.out.println("\n —共有"+count+"个这样的数字");//输出统计结果
long end= System.currentTimeMillis();
System.out.println("运行的时间为:"+(end-start));
}
}
}
在这里有两种方案,一种一个for循环,一种3层嵌套循环,是都可以完成的,但是有个性能问题,单循环时间是要小于嵌套循环的;