Java,0-9这十个数可以组成多少个不重复的三位,编写合适的程序
int count=0;
for(int i=100;i<=999;i++){
int num1=i/100;//取出百位
int num2=i%100/10;//取出十位
int num3=i%100%10;//取出个位
if(num1!=num2 && num2!=num3 && num1!=num3){
count++;
}
}
System.out.println("0-9这十个数可以组成多少个不重复的三位:"+count);
结果是648
当然看题目好像意思是3个循环吗?如果是的话,你改成3个循环然后判断都不一样就可以了。我是根据题目合起来写了一个。
public static void main(String[] args) {
int result=0;
for(int x=1;x<10;x++){
for(int y=0;y<10;y++){
if(y==x)continue;
for(int z=0;z<10;z++){
if(z==x||z==y)continue;
System.out.print((x*100+y*10+z)+" ");
result++;
}
System.out.println();
}
}
System.out.println("共能组成"+result+"个");
}
package test;
import java.util.*;
public class test1 {
private static List<String> resultList = new ArrayList<>();
private static int total = 3;//一共要取三个数
public static void main(String[] args) {
Integer[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
List<Integer> numList = Arrays.asList(arr);
getAll(numList, total, "");
System.out.println(resultList);
}
/**
* @param refList 源数组:用于取数的
* @param count 用于取几个数
* @param resultString 结果字符串:比如“103”
* @return
*/
public static List<String> getAll(List<Integer> refList, int count, String resultString) {
for (int i = 0; i < refList.size(); i++) {
/*
每一次循环要初始化 数组 和 结果字符串
*/
String tempString = resultString;
List<Integer> tempList = new ArrayList<>(refList);
String resultNum = tempList.remove(i).toString();
tempString += resultNum;
if (count == total && resultNum.equals("0")) {//代表第一次取数为0的情况
continue;
}
if (count != 1) {
getAll(tempList, count - 1, tempString);
} else {
resultList.add(tempString);
}
}
return resultList;
}
}