java Q441:乐透

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Q441:乐透相关的知识,希望对你有一定的参考价值。

import java.util.ArrayList;
import java.util.Scanner;
 
public class Main {
 
    static public ArrayList < Integer > list;
    static public int[] solution;
 
	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		int count = 0;
		while (true) {
			String arr[] = scn.nextLine().split(" ");
			if (arr[0].equals("0"))
				break;
			if (count != 0)
				System.out.println();
			list = new ArrayList<Integer>();
			for (int i = 1; i < arr.length; i++)
				list.add(Integer.parseInt(arr[i]));
			solution = new int[6];
			used = new int[list.size()];
			backtracking(0, 0);
			count++;
		}

	}
 
    public static void backtracking(int n, int pos) {
        if (n == 6) {
            for (int i = 0; i < 6; i++) {
                if (i != 0)
                    System.out.print(" ");
                System.out.print(solution[i]);
            }
            System.out.println();
            return;
        }
        for (int i = pos; i < list.size(); i++) {
                solution[n] = list.get(i);
                backtracking(n + 1, i + 1);
        }
    }
    /*題目:UVA Q441:Lotto
    作者:1010
    時間:西元 2018 年 11 月 */
}
public class Main {
	static int arr[]= {1,2,3,4,5}; // S集合
	static int ans[]=new int[3]; // 從集合中取三個的組合
	public static void main(String[] args) {
		backtracking(0,0);
	}
	public static void backtracking(int n,int pos) {
		if(n==3) { // 若dimension維度是第三層代表找完答案依序印出並結束遞迴
			for(int i=0;i<3;i++) {
				System.out.print(ans[i]+" ");
			}
			System.out.println();
			return;
		}
		for(int i=pos;i<5;i++) {// 每次遞迴從pos開始這樣就不會遇到重複值
				ans[n]=arr[i];
				backtracking(n+1,i+1);
		}
	}
/*  五個數字取三個並由小到大排列
    作者:1010
    時間:西元 2018 年 11 月 */
}
public class Main {
	static int arr[]= {1,2,3,4,5}; // S集合
	static int ans[]=new int[3]; // 從集合中取三個的組合
	static int check[]=new int[5]; // 檢查該數是否在ans[]集合中
	public static void main(String[] args) {
		backtracking(0);
	}
	public static void backtracking(int n) {
		if(n==3) { // 若dimension維度是第三層代表找完答案依序印出並結束遞迴
			for(int i=0;i<3;i++) {
				System.out.print(ans[i]+" ");
			}
			System.out.println();
			return;
		}
		for(int i=0;i<5;i++) {
			if(check[i]==0) {// 判斷該數是否已經出現在ans[]中
				check[i]=1; 
				ans[n]=arr[i];
				backtracking(n+1);
				check[i]=0;
			}
		}
	}
/*  五個數字取三個所有組合(無大小順序限制)
    作者:1010
    時間:西元 2018 年 11 月 */
}

以上是关于java Q441:乐透的主要内容,如果未能解决你的问题,请参考以下文章

简单的控制台乐透游戏 c# 匹配数组

swift 乐透快速选择斯威夫特

尝试创建乐透游戏,执行和编译有问题

如何使用 tesseract.js 识别乐透彩票上的日期和数字?

菜鸟级彩友机选揽大奖 旺站中大乐透763万

将数组添加到 ArrayList