当前位置: 代码迷 >> J2SE >> 从键盘任意输入1-9的数字以逗号分割,然后达到以上结果,小弟我该怎么办,========
  详细解决方案

从键盘任意输入1-9的数字以逗号分割,然后达到以上结果,小弟我该怎么办,========

热度:59   发布时间:2016-04-24 01:54:46.0
从键盘任意输入1-9的数字以逗号分割,然后达到以上结果,我该怎么处理,在线等========


题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?  
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

我想从键盘任意输入1-9的数字以逗号分割,然后达到以上结果,我该怎么处理,在线等========
Java code
import java.util.Scanner;public class Rank1 {    public static void main(String[]args){        /*Scanner in = new Scanner(System.in);        System.out.println("请输入一行1-9的数字,以逗号分割,以回车结束!");        String s = in.nextLine();        int arr[] = {Integer.parseInt(s)};        */        int arr[] = {1,2,3,4};        int i,j,k,temp=0;        int count = 0;        for(i = 0;i < arr.length;i++){            int bai = 100*arr[i];            for(j = 0;j<arr.length;j++){                int shi = 10*arr[j];                for(k = 0;k<arr.length;k++){                    int ge = arr[k];                    temp = bai+shi+ge;                    count++;                    if(count%8 == 0){                        System.out.print(temp+" ");                        System.out.println();                    }else{                        System.out.print(temp+" ");                    }                }            }        }        System.out.println();        System.out.println("一个可以组成"+count+"个三位数!");    }}


------解决方案--------------------
这个不用这么做吧,只需要计算出你输入的字符个数,然后用数学公式就可以完成!
------解决方案--------------------
Java code
public class Rank {    private char[] rank;    private boolean[] vist;    private char[] c;    private int size;    private long kind;        public Rank(char[] c,int size){        rank = new char[size];        vist = new boolean[c.length];        this.c = c;        this.size = size;        kind = 0;    }    public void showAllRank() {        kind = 0;        for (int i = 0; i < c.length; i++) {            vist[i] = false;        }        dfs(0);        System.out.println("kind:"+kind);    }    public void dfs(int level) {        if (level == size) {            for (int i = 0; i < size; i++) {                System.out.print(rank[i]);            }            System.out.println();            kind++;        } else {            for (int i = 0; i < c.length; i++) {                if ( !vist[i]) {                    vist[i] = true;                    rank[level] = c[i];                    dfs(level+1);                    vist[i] = false; //回溯                }            }        }    }    }
------解决方案--------------------
rank类我给你封装好了。

new Rank(arg1,arg2)

arg1是可供选择的字符集(在你的需求里面就是你键盘输出的那几个数)
arg2是排列出的字符串多长(在你的需求里面就是几位数)


------解决方案--------------------
int[] nums=new int[]{1,2,3,4};
int sum=0;
for(int i=0;i<nums.length;i++){
int a=nums[i]>0?nums[i]:nums[i<nums.length-1?i+1:-1];
for(int k : nums){
if(k!=a){
for(int c:nums){
if(c!=a&&c!=k){
System.out.println(a+""+k+""+c);
sum+=1;
}
}
}
}
}
System.out.println(sum);
  相关解决方案