拼出缘分

题目描述

13计科的ppmm紫菱给她的追求者们出了道难题,现在有2n个1到9的整数为:2个“1”,2个“2”,….,2个”n”。看谁能用这2n个数字拼成一个数,满足2个“1”中间有1个数字,2个“2”中间有2个数字,…,2个“n”中间有n个数字。你能解出这题赢得紫菱的芳心吗?

输入

一个整数n, (1<=n<=9)

输出

按由小到大顺序输出满足条件的拼出来的数字,每个数字占一行

样例输入

3

样例输出

231213
312132

代码

import java.util.Scanner;

public class Main {
    
    
	int n;
	int[] A;
	boolean[] Num;
	boolean[] Mark;

	public Main() {
    
    
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		A = new int[2 * n];
		Num = new boolean[n + 1];
		Search(0);
	}

	void Search(int pos) {
    
    
		if (pos == 2 * n) {
    
    
			for (int k = 0; k < 2 * n; k++)
				System.out.print(A[k]);
			System.out.println();
			return;
		}
		if (A[pos] != 0)
			Search(pos + 1);
		for (int i = 1; i <= n; i++) {
    
    
			if (Num[i] == false && pos + i + 1 < 2 * n && A[pos] == 0 && A[pos + i + 1] == 0) {
    
    
				A[pos] = i;
				A[pos + i + 1] = i;
				Num[i] = true;
				Search(pos + 1);

				A[pos] = 0;
				A[pos + i + 1] = 0;
				Num[i] = false;
			}
		}
	}

	public static void main(String[] args) {
    
    
		Main p = new Main();
	}
}

猜你喜欢

转载自blog.csdn.net/callmeCassie/article/details/90549879